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;}然后在问题中包含这些信息,不要在评论中发布容易遗漏的相关信息。请用所有相关信息更新您的问题。