【问题标题】:OracleCommand Parameter with concatenation具有串联的 OracleCommand 参数
【发布时间】:2015-06-29 14:05:09
【问题描述】:

这行得通:

OracleCommand cm = con.CreateCommand();
cmd.CommandText = String.Format("select s,e from {0}" + ".DTREE where DATAID=:pDataId", credentialsthing.dbschema");
cmd.Parameters.Add("pDataId", objectx.theid);

但是...我也想把第一个放在参数命令中:

cmd.CommandText = "select s,e from :pPar1" + ".DTREE where DATAID=:pDataId");
cmd.Parameters.Add("pPar1", credentialsthing.dbschema);
cmd.Parameters.Add("pDataId", objectx.theid);

这失败了。为什么,语法应该是什么?

【问题讨论】:

  • 坚持你的第一个代码示例。不能在FROM 子句中对表名进行参数绑定。
  • 啊,是的,所以 CA2100 审查 SQL 查询是否存在安全漏洞很糟糕。代码分析 代码分析 代码分析 zzz。检查这个:stackoverflow.com/questions/19851722/…

标签: c# sql oracle parameters connection


【解决方案1】:

您的不能参数化您的表名、列名或任何其他数据库对象。

您只能参数化您的值。这就是为什么您需要对表名使用字符串连接。

但是你应该非常小心地这样做,你需要为你的表名提供强大的验证,或者应该使用某种形式的白名单。

【讨论】:

    猜你喜欢
    • 2012-06-18
    • 2010-12-11
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多