C# 添加不起作用的值

C# 添加不起作用的值,c#,ms-access,C#,Ms Access,我试图在我的网站上做一个搜索功能,但它不起作用 在我的代码中我输入了一点 if(txtZoeken.Text != string.Empty) { naam = txtZoeken.Text; } string Query = "SELECT Naam, Omschrijving,Prijs,Productnummer,CategorieNaam FROM Producten INNER JOIN Cate

我试图在我的网站上做一个搜索功能,但它不起作用

在我的代码中我输入了一点

        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);

根据我的经验,问题可能在于查询中的引号

试试这个:

    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);
我删除了查询中的引号,并将模式放入变量中。

摘自

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);

描述“不工作”。你有例外吗?输出是否与您期望的不同?当您将问题发布到堆栈溢出时,请确保您提供了所有相关信息。如果我使用第二种方式,程序会在我的代码中稍微向上显示搜索项,则不会显示任何内容。i postedif(txtZoeken.Text!=string.Empty){naam=txtZoeken.Text;}然后在问题中包含这些信息,不要在评论中发布容易遗漏的相关信息。请用所有相关信息更新您的问题。