使用参数化的SQL LIKE语句

时间:2015-03-30 06:33:22

标签: c# sql sql-like parameterized

我试图参数化我的SQL语句但我在使用LIKE语句时遇到了一些问题。我尝试了不同的解决方案,但没有任我的代码:

sqlCmd = new SqlCommand("SELECT " + form1.cusId.Text + "," + form1.cusName.Text" FROM " + form1.getTable() + " WHERE " + form1.getCusId() + " LIKE @filterCustomers", connection);
sqlCmd.Parameters.AddWithValue("@filterCustomers", form1.filterCus().Trim() + "%");

我正在

  

"必须声明标量变量@ filterCustomers"。

为什么会这样?由于这是常见的解决方案......

2 个答案:

答案 0 :(得分:0)

如果你尝试

怎么办?
sqlCmd.Parameters.Add("@filterCustomers",SqlDbType.VarChar,8).Value = form1.filterCus().Trim() + "%";

而不是:

sqlCmd.Parameters.AddWithValue("@filterCustomers", form1.filterCus().Trim() + "%");

您可以更改数据类型的.VarChar和所需最大字段长度的8,或者完全删除,8参数lenght中的无限制

答案 1 :(得分:0)

您需要将字符串放在单引号'中:

...+" LIKE '"+ form1.filterCus().Trim()+"%'", connection);

如果您不担心SQL INJECTION

编辑:您还可以使用动态sql

sqlCmd = new SqlCommand("EXEC ('SELECT..... WHERE FIELD LIKE ''' + @filterCustomers + '%''')", connection);
sqlCmd.Parameters.AddWithValue("@filterCustomers", form1.filterCus().Trim() + "%");