【问题标题】:Selecting Items from Database that Matches with the string Based on Entered Characters根据输入的字符从数据库中选择与字符串匹配的项目
【发布时间】:2016-11-16 22:21:03
【问题描述】:

我想选择与输入的字符串匹配的项目。似乎查询正在选择所有包含至少一个匹配字母的项目。

我不想完全匹配..我想选择与开始匹配的字符串..就像我输入'it'我想列出所有以'it'开头的字符串

我做错了什么?

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);
                            }

                        }

【问题讨论】:

  • @3615 能否请您发布查询作为答案。

标签: c# sql .net datagrid


【解决方案1】:

不要使用LIKE,而是使用=。并将您的字符串更改为确切的字符串,而不是%text%

string commandText = "SELECT itemname,rate,stock FROM mytable WHERE itemname = @id";
...
string searchParam = text_item.Text;

---------- 已编辑 ------------

更新问题后,答案是:

string searchParam = string.Format("{0}%", text_item.Text);

第一个 % 不是必需的,因为您不想在其中使用通配符。

【讨论】:

    【解决方案2】:

    您应该使用“=”而不是“喜欢”。如果要使用通配符进行搜索,通常使用 Like。

    【讨论】:

    • 我不想要完全匹配...只是找到与输入字符串匹配的字符串..请参阅更新。
    【解决方案3】:

    如果您希望查询返回以开头的结果,请将参数值更改为

    string searchParam = String.Format("{0}%", text_item.Text);
    

    【讨论】:

      【解决方案4】:

      您的代码运行良好。 是的,您可以在查询中使用 LIKE 运算符。 请调试并检查“text_item”变量中的内容。 缩小搜索范围。 可以参考link

      检查 like 运算符的语法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-03
        • 2021-11-24
        • 2021-09-08
        相关资源
        最近更新 更多