以下是我从 Microsoft 页面获得的代码:SqlCommand
public static Int32 ExecuteNonQuery(String connectionString, String commandText, CommandType commandType, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(commandText, conn))
{
// There're three command types: StoredProcedure, Text, TableDirect. The TableDirect
// type is only for OLE DB.
cmd.CommandType = commandType;
cmd.Parameters.AddRange(parameters);
conn.Open();
return cmd.ExecuteNonQuery();
}
}
}
但是,VS 代码分析仍然抱怨“CA2100”:
警告 CA2100 在“FlexClaimFormRepository.ExecuteNonQuery(string, string, CommandType, params SqlParameter[])”中传递给“SqlCommand.SqlCommand(string, SqlConnection)”的查询字符串可能包含以下变量“commandText”。如果这些变量中的任何一个可能来自用户输入,请考虑使用存储过程或参数化 SQL 查询,而不是使用字符串连接构建查询。
我知道警告存在的确切原因,但是关于如何摆脱它的任何想法?鉴于在函数内设置 commandText 是不可接受的,因为我希望它是一个参数。