我想调用一条sql语句,例如:
Select * From Table Where Column in ('value1', 'value2', 'value3')
是否像将命令参数的值设置为等于“那么简单?('value1', 'value2', 'value3')
"?
@Charles:你正在朝着正确的方向前进,但我们使用参数化查询主要是为了防止 SQL 注入。输入“外部”值(params string[] args
)在查询中硬编码是自找麻烦。您可以迭代参数,但仍然必须使用如下参数:
string[] values = new [] {"value1", "value2", "value3", "value4"};
StringBuilder query = new StringBuilder("Select * From Table Where Column in (");
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection("Your connection string");
for(int i = 0; i < columns.Length; i++)
{
string arg = string.Format("@arg{0}", i);
cmd.Parameters.AddwithValue(arg, SanatizeSqlString(columns[i]));
sb.AppendFormat("{0}, ", arg);
}
sb = sb.Remove(sb.Length -2, 2);
sb.Append(")");
cmd.CommandText = sb.ToString();
这样你最终会得到如下查询:
select * from table where column in (@arg0, @arg1, @arg2, @arg3)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)