OleDb CREATE TABLE 参数化

lilunlil 2018-12-17 04:24:46
首先,我想说,我在论坛中查找了许多贴子,终于弄明白了oledb与sqldb之间的区别,也自以为明白的差不多了,但下面这个问题实在头大,请高手指点。
正题,下面不带参数的过程是可以成功运行的

public int? UpdateCreate(string sql, OleDbParameter param)
{
sql = "CREATE TABLE 默认表名([列1] TEXT(50),[列2] TEXT(50),[列3] TEXT(50))";
ole_connection = new OleDbConnection(conn_str);
OleDbCommand cmd = new OleDbCommand(sql, ole_connection);
try
{
ole_connection.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
string errorInfo = "调用public static int Update()方法时出错";
Log.ErrLog(errorInfo + ex.Message, 1, true);
return null;
}
finally
{ ole_connection.Close(); }
}


下面是我研究后,想当然编出来的带参数的用法,肯定是错误的(因为编译通不过,提示语法错误),但问题是怎么样才是正确的。


public int? UpdateCreate(string sql, OleDbParameter param)
{
sql = "CREATE TABLE ?([列1] TEXT(50),[列2] TEXT(50),[列3] TEXT(50))";
ole_connection = new OleDbConnection(conn_str);
OleDbCommand cmd = new OleDbCommand(sql, ole_connection);
try
{
ole_connection.Open();
OleDbParameter parameter = new OleDbParameter("@表名", "预备表名");
cmd.Parameters.Add(parameter);
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
string errorInfo = "调用public static int Update()方法时出错";
Log.ErrLog(errorInfo + ex.Message, 1, true);
return null;
}
finally
{ ole_connection.Close(); }
}



...全文
317 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lilunlil 2018-12-20
  • 打赏
  • 举报
回复
引用 2 楼 6lilu9 的回复:
我来告诉你原因:参数化不是你想象中的替换,不是所有的地方都可以参数化的,表名,列名都不可以。 下面这个贴子就知道原因 https://blog.csdn.net/CRDBreeze/article/details/6437620
虽然没解决我的问题,貌似分也只能给你了。 不过还是谢谢你。
lilunlil 2018-12-18
  • 打赏
  • 举报
回复
这个版块不景气呀 我之所以问这个问题,是因为系统给我提示 严重性 代码 说明 项目 文件 行 禁止显示状态 警告 CA2100 传递给 'AccessHelper.UpdateCreate(string)' 中的 'OleDbCommand.OleDbCommand(string, OleDbConnection)' 的查询字符串可能包含以下变量 'sql'。如果其中的任意变量可能来自用户输入,请考虑使用存储过程或参数化 SQL 查询,而不是通过字符串串联来生成查询。
6lilu9 2018-12-18
  • 打赏
  • 举报
回复
我来告诉你原因:参数化不是你想象中的替换,不是所有的地方都可以参数化的,表名,列名都不可以。 下面这个贴子就知道原因 https://blog.csdn.net/CRDBreeze/article/details/6437620

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧