我在DataAcess类中有以下函数,但它没有显示任何结果.
我的代码如下:
public List<Products> GetProduct(string productName)
{
System.Data.DataSet ds = null;
db = DBWrapper.GetSqlClientWrapper();
db.ClearParameters();
db.AddParameter(db.MakeInParam("@ProductName", DbType.String, 30, productName));
string query = @"SELECT ProductId
FROM [Products]
WHERE Name LIKE '%@ProductName%'";
ds = db.GetDataSet(query);
db.ClearParameters();
// Rest of Code
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
string query = @"SELECT ProductId
FROM [Products]
WHERE Name LIKE '%"+"@ProductName"+"%'";
Run Code Online (Sandbox Code Playgroud)
但它运行良好,没有参数化,如:
string query = @"SELECT ProductId
FROM [Products]
WHERE Name LIKE '%"+productName+"%'";
Run Code Online (Sandbox Code Playgroud)
如何使用@ProductName参数化编写这个???
你应该用
LIKE '%' + @ProductName + '%'
Run Code Online (Sandbox Code Playgroud)
代替
LIKE '%@ProductName%'
Run Code Online (Sandbox Code Playgroud)
为什么?因为在查询中,您的参数在引号内.在引号中,SQL会将其识别为字符串文字,并且永远不会将其视为参数.
作为替代方案,您可以% %在Damien_The_Unbeliever 提到的AddParameter方法中使用您的方法
.