本文介绍了不显示结果的SQL参数化查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经按照我的DataAcess类的功能,但它没有显示任何结果。结果
我的code是如下:

I have following function in my DataAcess class, but it is not showing any result.
My code is as follow:

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
 }

我也试过:

string query = @"SELECT ProductId
                 FROM [Products]
                 WHERE Name LIKE '%"+"@ProductName"+"%'";

但它没有设定参数运行的罚款:

But it runs fine without parameterized like:

string query = @"SELECT ProductId
                 FROM [Products]
                 WHERE Name LIKE '%"+productName+"%'";

如何使用与参数写的 @ProductName ???

推荐答案

您应该使用

LIKE '%' + @ProductName + '%'

而不是

LIKE '%@ProductName%'

为什么呢?因为在查询时,你的参数是引号内。在报价,SQL将其识别为和从不将其视为一个参数

作为一种替代方法,您可以使用 %% AddParameter 方法的一部分

As an alternative, you can use your % % part in your AddParameter method asDamien_The_Unbeliever mentioned.

这篇关于不显示结果的SQL参数化查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-15 13:40