当前位置:  开发笔记 > 数据库 > 正文

使用带有SQL命令对象和C#2.0的"IN"运算符

如何解决《使用带有SQL命令对象和C#2.0的"IN"运算符》经验,为你挑选了1个好方法。

我想调用一个sql语句,例如:

Select * From Table Where Column in ('value1', 'value2', 'value3')

是否像设置命令参数的值等于" ('value1', 'value2', 'value3')" 一样简单?



1> 小智..:

@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)

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有