加值不工作
本文关键字:工作 | 更新日期: 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);
我从查询中删除了引号,并将模式放在变量中。