关于用于搜索的ado.net
我想从ado.net中的数据库产品名称中进行搜索。当用户输入产品的全名时,会得到结果,但我希望当用户输入第一个字母时,文本更改事件调用并根据第一个字母获得结果。例如,如果用户只输入“e”,则会根据e获得所有结果,并在datagridview中显示关于用于搜索的ado.net,.net,.net,我想从ado.net中的数据库产品名称中进行搜索。当用户输入产品的全名时,会得到结果,但我希望当用户输入第一个字母时,文本更改事件调用并根据第一个字母获得结果。例如,如果用户只输入“e”,则会根据e获得所有结果,并在datagridview中显示 private void textBox10_TextChanged(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(Config
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);
与
这应该(安全地)返回名称以输入的字符串开头的任何产品
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;
}