我想选择与输入的字符串匹配的项目。似乎查询正在选择包含至少匹配字母的所有项目。
我不想要完全匹配..我想选择与起始匹配的字符串。如果我键入'它'我想列出以'
开头的所有字符串我做错了什么?
using (SqlConnection conn = new SqlConnection(constr))
{
try
{
conn.Open();
SqlDataReader myReader = null;
string commandText = "SELECT itemname,rate,stock FROM mytable WHERE itemname LIKE @id";
SqlCommand command = new SqlCommand(commandText, conn);
string searchParam = String.Format("%{0}%", text_item.Text);
command.Parameters.AddWithValue("@id", searchParam);
using (SqlDataAdapter sda = new SqlDataAdapter(command))
{
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
dataGridView1.DataSource = dt;
}
}
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
答案 0 :(得分:1)
请勿使用LIKE
,而是使用=
。并将您的字符串更改为完全字符串,而不是%text%
string commandText = "SELECT itemname,rate,stock FROM mytable WHERE itemname = @id";
...
string searchParam = text_item.Text;
---------------------- EDITED ------------------------
更新后的问题后,答案是:
string searchParam = string.Format("{0}%", text_item.Text);
第一个%是没有必要的,因为你不需要那里的通配符。
答案 1 :(得分:0)
而不是“喜欢”,你应该使用“=”。如果你想用通配符搜索,通常会使用。
答案 2 :(得分:0)
如果您希望查询返回结果,请将参数值更改为
string searchParam = String.Format("{0}%", text_item.Text);
答案 3 :(得分:0)
您的代码运行正常。 是的,您可以在查询中使用LIKE运算符。 请调试并检查" text_item"中的内容。变量。 缩小搜索范围。 您可以参考link
检查like运算符的语法。