从数据库中选择与基于输入字符的字符串匹配的项目

时间:2016-07-14 06:15:16

标签: c# sql .net datagrid

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

我不想要完全匹配..我想选择与起始匹配的字符串。如果我键入'它'我想列出以'

开头的所有字符串

我做错了什么?

enter image description here

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

                        }

4 个答案:

答案 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运算符的语法。