我正在修复代码中的SQL注入。 其中一个方法执行存储过程并附加违反SQL注入规则的参数:
sqlCmd.CommandText = "updateSalesReps @repNumber='" + RepNumber + "',
@ISONumber='" + ISONumber + "', @type='" + strUpdtType + "'";
现在,我正在添加参数:
sqlCmd.Parameters.AddWithValue("@rNumber", RepNumber);
sqlCmd.Parameters.AddWithValue("@isoNumber", ISONumber);
sqlCmd.Parameters.AddWithValue("@updateType",strUpdtType);
这是我的最终查询:
sqlCmd.CommandText = "updateSalesReps @repNumber=@repNumber,
@ISONumber=@isoNumber, @type=@updateType";
我的问题是,在我的存储过程中是否可以使用...@repNumber=@repNumber...
,否则会产生命名歧义?
答案 0 :(得分:2)
如果在命令对象上指定commandType和commandText属性,则不需要这样做。假设您正在使用SQL Server存储过程,请尝试:
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandTimeout = 15;
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.CommandText = "updateSalesReps"
然后使用AddWithValue添加到您的参数集合。
将CommandType属性设置为StoredProcedure时,应将CommandText属性设置为存储过程的名称。当您调用其中一个Execute方法时,该命令将执行此存储过程。