SQL参数化查询未显示结果

Soh*_*ail 3 c# sql asp.net

我在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参数化编写这个???

Son*_*nül 7

你应该用

LIKE '%' + @ProductName + '%'
Run Code Online (Sandbox Code Playgroud)

代替

LIKE '%@ProductName%'
Run Code Online (Sandbox Code Playgroud)

为什么?因为在查询中,您的参数在引号内.在引号中,SQL会将其识别为字符串文字,并且永远不会将其视为参数.

作为替代方案,您可以% %Damien_The_Unbeliever 提到AddParameter方法中使用您的方法 .