【发布时间】:2013-07-24 02:32:31
【问题描述】:
我有以下代码
public DataSet GetProject(string projectID)
{
DataSet dataTable = new DataSet();
DataAccess dataAccess = new DataAccess();
OracleCommand commandOb = new OracleCommand();
strQuery.Append("select projectName, managerName");
strQuery.Append("from project ");
strQuery.Append("where projectID = '" + projectID + "'");
cmd.CommandText = strQuery.ToString();
dataTable = dataAccess.ExecuteDataAdapter(commandOb);
return dataTable;
}
这是构建和执行查询的好方法吗?这是否容易受到 SQL 注入攻击?
在动态构建查询时,是否有推荐的方法。任何帮助将不胜感激。
【问题讨论】:
-
Stay away from Dynamic querys尝试使用参数化查询,如果你不熟悉如何做到这一点.. 然后使用string.Format(Select projectName,managerName from project where ProjectID={0}", projectID); -
使用参数化查询或者更好的是,调用存储过程...
-
+1StoredProcedure 也不会出错 -
@DJKRAZE - 这对我来说看起来没有参数化......
-
我说的没看懂。我说的是他不知道怎么做的。我非常了解如何编写参数化查询。我不会为他做 OP 的工作
标签: c# sql oracle code-injection enterprise