使用参数化SQL LIKE语句
本文关键字:LIKE 语句 SQL 参数 | 更新日期: 2025-02-19 13:26:08
我试图参数化我的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"。
为什么会这样?由于这是常见的解决方案。。。

如果你尝试怎么办
sqlCmd.Parameters.Add("@filterCustomers",SqlDbType.VarChar,8).Value = form1.filterCus().Trim() + "%";
代替:
sqlCmd.Parameters.AddWithValue("@filterCustomers", form1.filterCus().Trim() + "%");
您可以更改数据类型的.VarChar和所需的最大字段长度的8,或者完全删除,8,因为参数长度没有限制
您需要将字符串放在单引号':中
...+" LIKE '"+ form1.filterCus().Trim()+"%'", connection);
如果您不担心SQL注入
EDIT:您还可以使用动态sql:
sqlCmd = new SqlCommand("EXEC ('SELECT..... WHERE FIELD LIKE ''' + @filterCustomers + '%''')", connection);
sqlCmd.Parameters.AddWithValue("@filterCustomers", form1.filterCus().Trim() + "%");