加值不工作

本文关键字:工作 | 更新日期: 2023-09-27 18:08:04

我想在我的网站上做一个搜索功能,但它不工作

在我的代码中,我输入了

        if(txtZoeken.Text != string.Empty)
        {
            naam = txtZoeken.Text;
        }
        string Query = "SELECT Naam, Omschrijving,Prijs,Productnummer,CategorieNaam FROM Producten INNER JOIN Categorie ON Producten.Categorie = Categorie.CategorieId WHERE naam LIKE '%@naam%'";
        OleDbCommand SqlQuery = new OleDbCommand(Query, Conn);
        SqlQuery.Parameters.AddWithValue("@naam",naam);

如果我像这样使用

        string Query = "SELECT Naam, Omschrijving,Prijs,Productnummer,CategorieNaam FROM Producten INNER JOIN Categorie ON Producten.Categorie = Categorie.CategorieId WHERE naam LIKE '%"+txtZoeken.text+"%'";
        OleDbCommand SqlQuery = new OleDbCommand(Query, Conn);
        SqlQuery.Parameters.AddWithValue("@naam",naam);

加值不工作

节选自OleDbCommand。MSDN上的参数文档。

OLE DB .NET提供程序不支持传递命名参数对象调用的SQL语句或存储过程的参数"CommandType"为"Text"时的OleDbCommand。在这种情况下,必须使用问号占位符

因此,改成:

string Query = "SELECT Naam, Omschrijving, Prijs, Productnummer, CategorieNaam FROM Producten INNER JOIN Categorie ON Producten.Categorie = Categorie.CategorieId WHERE naam LIKE '%?%'";
OleDbCommand SqlQuery = new OleDbCommand(Query, Conn);
SqlQuery.Parameters.AddWithValue("@naam",naam);

根据我的经验,问题可能与查询中的引号有关。

试试这个:

    if(txtZoeken.Text != string.Empty)
    {
        naam = "%" + txtZoeken.Text + "%";
    }
    string Query = "SELECT Naam, Omschrijving,Prijs,Productnummer,CategorieNaam FROM Producten INNER JOIN Categorie ON Producten.Categorie = Categorie.CategorieId WHERE naam LIKE ?";
    OleDbCommand SqlQuery = new OleDbCommand(Query, Conn);
    SqlQuery.Parameters.AddWithValue("@naam",naam);

我从查询中删除了引号,并将模式放在变量中。