以列表作为sql参数的.NET查询 public SqlDataReader GetDataReader(列出参数值){ System.Data.SqlClient.SqlConnection cn=new System.Data.SqlClient.SqlConnection(); cn.ConnectionString=SQLConnectionObj.ConnectionString; cn.Open(); System.Data.SqlClient.SqlCommand cmd=new System.Data.SqlClient.SqlCommand(); cmd.Parameters.AddRange(parameterValues.ToArray()); cmd.Connection=cn; cmd.CommandText=SelectStatement; cmd.CommandType=CommandType.Text; 返回sReader=cmd.ExecuteReader(); }
当我尝试在select查询中添加这个for IN条件变量时,它失败了。 只需将其用于强化修复。已尝试使用dictionary Sql参数。它可以工作,但会增加问题计数 请帮我做这个。如果你有什么新的东西想添加,也可以随意添加 但以下代码是有效的:-以列表作为sql参数的.NET查询 public SqlDataReader GetDataReader(列出参数值){ System.Data.SqlClient.SqlConnection cn=new System.Data.SqlClient.SqlConnection(); cn.ConnectionString=SQLConnectionObj.ConnectionString; cn.Open(); System.Data.SqlClient.SqlCommand cmd=new System.Data.SqlClient.SqlCommand(); cmd.Parameters.AddRange(parameterValues.ToArray()); cmd.Connection=cn; cmd.CommandText=SelectStatement; cmd.CommandType=CommandType.Text; 返回sReader=cmd.ExecuteReader(); },sql,asp.net,.net,fortify,Sql,Asp.net,.net,Fortify,当我尝试在select查询中添加这个for IN条件变量时,它失败了。 只需将其用于强化修复。已尝试使用dictionary Sql参数。它可以工作,但会增加问题计数 请帮我做这个。如果你有什么新的东西想添加,也可以随意添加 但以下代码是有效的:- public SqlDataReader GetDataReader(List<SqlParameter> parameterValues){ System.Data.SqlClient.SqlConnection cn = n
public SqlDataReader GetDataReader(List<SqlParameter> parameterValues){
System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection();
cn.ConnectionString = SQLConnectionObj.ConnectionString;
cn.Open();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.Parameters.AddRange(parameterValues.ToArray());
cmd.Connection = cn;
cmd.CommandText = SelectStatement;
cmd.CommandType = CommandType.Text;
return sReader = cmd.ExecuteReader();
}
公共SqlDataReader GetDataReader(字典qParams)
{
SqlCommand SQLCommandObj=新的SqlCommand(SelectStatement,
SQLConnectionObj);
字符串查询=SelectStatement;
如果(qParams.Count>0)
{
foreach(qParams.Keys中的字符串键)
{
字符串值=qParams[键];
SqLePARPAR=新的Sql参数();
参数参数名称=密钥;
票面价值=价值;
SQLCommandObj.Parameters.Add(par);
}
}
参数(Sql参数PAR在Sql命令对象中)
{
字符串键=参数参数名称;
字符串值= PAR.Valk作为字符串;
query=query.Replace(键、值);
}
如果(qParams.Count>0)
{
SQLCommandObj.CommandText=“”;
SQLCommandObj.CommandText=查询;
}
SQLCommandObj.CommandTimeout=CustomCommandTimeout;
返回SQLCommandObj.ExecuteReader(CommandBehavior.CloseConnection);
}
SelectStatement中有什么?@ZoharPeled select查询类似于select*from costs where material in(@material)…并且sql语句中还有多个IN条件。可能的重复代码存在一些问题-首先是您没有关闭或处理任何
IDisposable
实例(SqlConnection
,SqlCommand
,以及SqlDataReader
都是IDisposable
)。由于您使用的是.Net和Sql Server,请查看表值参数-在大多数情况下,这是将类似数组的结构传递给Sql Server的最佳实践方法。@ZoharPeled SqlConnection、command和datareader都存在。只需使用该块进行强化即可。。
public SqlDataReader GetDataReader(Dictionary<string, string> qParams)
{
SqlCommand SQLCommandObj = new SqlCommand(SelectStatement,
SQLConnectionObj);
string query=SelectStatement;
if (qParams.Count > 0)
{
foreach (string key in qParams.Keys)
{
string value = qParams[key];
SqlParameter par = new SqlParameter();
par.ParameterName = key;
par.Value = value;
SQLCommandObj.Parameters.Add(par);
}
}
foreach(SqlParameter par in SQLCommandObj.Parameters)
{
string key = par.ParameterName;
string value = par.Value as string;
query=query.Replace(key, value);
}
if (qParams.Count > 0)
{
SQLCommandObj.CommandText = "";
SQLCommandObj.CommandText = query;
}
SQLCommandObj.CommandTimeout = CustomCommandTimeout;
return SQLCommandObj.ExecuteReader(CommandBehavior.CloseConnection);
}