Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用';在';带有SQL命令对象和C#2.0的运算符_Sql_C# 2.0 - Fatal编程技术网

使用';在';带有SQL命令对象和C#2.0的运算符

使用';在';带有SQL命令对象和C#2.0的运算符,sql,c#-2.0,Sql,C# 2.0,我想调用sql语句,例如: Select * From Table Where Column in ('value1', 'value2', 'value3') 它是否简单到将命令参数的值设置为“('value1'、'value2'、'value3')”?如果in子句只有三个参数,则可以使用这些参数。否则,您可以构建动态SQL(小心SQL注入攻击) 另一种方法是创建一个UDF,它接受一个带分隔符的字符串并返回一个表。然后,您可以将查询修改为: select * from table inne

我想调用sql语句,例如:

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

它是否简单到将命令参数的值设置为“
('value1'、'value2'、'value3')
”?

如果in子句只有三个参数,则可以使用这些参数。否则,您可以构建动态SQL(小心SQL注入攻击)

另一种方法是创建一个UDF,它接受一个带分隔符的字符串并返回一个表。然后,您可以将查询修改为:

select * from 
table inner join
dbo.fn_stringToTable(@params)

另一个选项是将SqlCommand的commandtype设置为“text”,并在代码中构造整个Sql字符串。。。假设列是一个varchar,并且您有一个名为“paramValues”的字符串arrray中的值


@查尔斯:你的方向是对的,但我们使用参数化查询主要是为了防止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();

是否只有3个值可以匹配,或者它们的值可以更多?这个问题可能很有用,请参见前一个问题:的可能重复
   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)