具有多个参数的参数化动态sql查询

时间:2016-05-23 13:03:18

标签: c# mysql parameterized-query

我在c#中有一个程序,它将使用动态创建的字符串运行查询,该字符串将用作查询。

现在由于SQL注入的可能性,我想使用参数化查询来生成相同的内容。

正在查看Parameterized dynamic sql query,这主要是我想要的,但后来我希望在同一序列中有多个参数,而不是在不同的序列中。 我想要像

这样的东西
(Where value in ({0}, {1}, {2}), param0 , param1, param2 )

该主题的答案是

SqlCommand cmd = new SqlCommand();
StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.Append("SELECT name, memberid FROM members ");

var i = 1;
foreach (string item in keywords)
{
    sqlBuilder.Append(i == 1 ? " WHERE " : " AND ");
    var paramName = "@searchitem" + i.ToString();
    sqlBuilder.AppendFormat(" Name LIKE {0} ", paramName); 
    cmd.Parameters.AddWithValue(paramName, "%" + item + "%");

    i++;
}
cmd.CommandText = sqlBuilder.ToString();

如果我将此用于查询,则会产生类似

的内容
where Value In param0 and value in param1 and value in param2

如果我没有弄错,那么在服务器性能方面是非常糟糕的。

那我怎么得到类似

的东西呢?
sqlBuilder.AppendFormat(" Name IN {0} , {1} , {2} ", paramName0 , paramName1 , paramName2 );

用于参数化动态查询?

我尝试过的所有方法都可以编译好,但是会返回运行时错误。

似乎无法确定我做错了什么。 :( 有什么帮助吗?

0 个答案:

没有答案
相关问题