LIKE子句不按预期返回值

时间:2016-12-06 17:20:00

标签: c# sql winforms

我接下来要根据输入的任何值过滤下拉框。例如。如果一个单词通常是"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());
        }

    }

3 个答案:

答案 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"匹配。并且正如评论中所建议的那样,您应该参数化您的查询。