我试图参数化我的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"。
为什么会这样?由于这是常见的解决方案......
答案 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() + "%");