我接下来要根据输入的任何值过滤下拉框。例如。如果一个单词通常是"16 cat123"
,则用户必须首先键入数字"16"
或数字"1"
以显示结果。如果用户应该从键入"cat123"
开始,那么我会想要而不是这样,那么它仍然会调出"16 cat123"
这是原始项目。我怎样才能实现这一目标?我知道它是LIKE
子句与我的SELECT
的组合,但目前它仍然以相同的方式运行,只是通过输入的第一个字母发回值。这是我目前的查询:
string query = "SELECT * FROM dbo.Carimed WHERE Item_Description LIKE '%" + comboBox3.Text.Replace("'", "''") + "%'; ";
我错过了什么?
更新了完整功能:
private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
string connectionString = "Data Source=CMDLAP126;Initial Catalog=Carimed_Inventory;User ID = sa; Password = 123456;";
string query = " "SELECT * FROM dbo.Carimed WHERE Item_Description LIKE '%" + comboBox3.Text.Replace("'", "''") + "%' ";
SqlConnection con = new SqlConnection(connectionString);
con.Open();
SqlCommand cmd = new SqlCommand(query, con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string cari_code = dr.GetString(dr.GetOrdinal("item#"));
textBox2.Text = cari_code;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
答案 0 :(得分:0)
试试这个:
string query = "SELECT * FROM dbo.Carimed WHERE Item_Description LIKE '" + comboBox3.Text.Replace("'", "''") + "%'; ";
答案 1 :(得分:0)
string query = "SELECT * FROM dbo.Carimed WHERE Item_Description LIKE '%" + comboBox3.Text.Replace("'", "''") + "%' ";
也许删除作为查询字符串一部分的分号?
答案 2 :(得分:0)
除了查询中的额外;
,它看起来是正确的。如果您的应用程序适用,您可能需要修剪内容(comboBox3.Text.Trim()
),以使"cat123 "
与"16 cat123"
匹配。并且正如评论中所建议的那样,您应该参数化您的查询。