Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于用于搜索的ado.net_.net - Fatal编程技术网

关于用于搜索的ado.net

关于用于搜索的ado.net,.net,.net,我想从ado.net中的数据库产品名称中进行搜索。当用户输入产品的全名时,会得到结果,但我希望当用户输入第一个字母时,文本更改事件调用并根据第一个字母获得结果。例如,如果用户只输入“e”,则会根据e获得所有结果,并在datagridview中显示 private void textBox10_TextChanged(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(Config

我想从ado.net中的数据库产品名称中进行搜索。当用户输入产品的全名时,会得到结果,但我希望当用户输入第一个字母时,文本更改事件调用并根据第一个字母获得结果。例如,如果用户只输入“e”,则会根据e获得所有结果,并在datagridview中显示

    private void textBox10_TextChanged(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["hamad"].ConnectionString);
        conn.Open();
        DataSet dtt = new DataSet();
        SqlCommand cmd = new SqlCommand("SELECT * from product where pname = '" + textBox10.Text.ToString() + "'", conn);
        SqlDataAdapter daa = new SqlDataAdapter();
        daa.SelectCommand = cmd;
        daa.Fill(dtt, "product");
        dataGridView2.DataSource = dtt;
        dataGridView2.DataMember = "product";
        dataGridView2.Visible = true;
    }

请帮帮我吧。我想首先要做的是,即使我的答案假设不正确,也绝对不要将用户提供的文本附加到SQL语句中。这是在问问题


我猜您需要以用户在文本框中输入的文本开头的所有结果

您向数据库询问的任何条目都与在数据库中输入的条目完全相同,因此当用户查找(比如书籍)时,他需要输入书籍的完整标题,否则不会返回。这算不上什么搜索:)

为此,除使用
=
外,您还需要使用。尝试更改行:

SqlCommand cmd = new SqlCommand("SELECT * from product where pname = '" + textBox10.Text.ToString() + "'", conn);

这应该(安全地)返回名称以输入的字符串开头的任何产品

  • 当用户按tab键、enter键或单击textbox外部的某个对象时,将调用textChange事件
  • 如果要从字符串的一部分进行搜索,必须在sql查询中使用like
  • 试试这个

      private void textBox10_TextChanged(object sender, EventArgs e)
      {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["hamad"].ConnectionString);
        conn.Open();
        DataSet dtt = new DataSet();
        SqlCommand cmd = new SqlCommand("SELECT * from product where pname like @pname+'%'", conn);
        cmd.Parameters.AddWithValues("@pname", textBox10.Text);
        SqlDataAdapter daa = new SqlDataAdapter();
        daa.SelectCommand = cmd;
        daa.Fill(dtt, "product");
        dataGridView2.DataSource = dtt;
        dataGridView2.DataMember = "product";
        dataGridView2.Visible = true;
      }
    
    这将显示以您键入的字符开头的所有记录。
    注意;如果您按tab键、enter键或单击文本框外的内容,所有这些都将完成。

    那么您在上述代码方面遇到了什么问题?请注意SWeko答案的第一行;然后重新访问所有现有的数据访问代码。永远不要连接输入。
      private void textBox10_TextChanged(object sender, EventArgs e)
      {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["hamad"].ConnectionString);
        conn.Open();
        DataSet dtt = new DataSet();
        SqlCommand cmd = new SqlCommand("SELECT * from product where pname like @pname+'%'", conn);
        cmd.Parameters.AddWithValues("@pname", textBox10.Text);
        SqlDataAdapter daa = new SqlDataAdapter();
        daa.SelectCommand = cmd;
        daa.Fill(dtt, "product");
        dataGridView2.DataSource = dtt;
        dataGridView2.DataMember = "product";
        dataGridView2.Visible = true;
      }