【发布时间】:2016-05-03 16:48:36
【问题描述】:
我的程序中有一个搜索按钮。我想要的是每次搜索时我都会输入lastname,当lastname等于数据库中的任何lastname时,该人的firstname和lastname将显示在@ 987654326@ 并且每当我单击listbox 中的结果时,此人的详细信息将显示在textboxes 中。问题是当有相同姓氏的人时,他们的名字是唯一列出的,但是当我点击名字时,textboxes 中会出现相同的详细信息。
请帮忙。
这是我的代码:
connection.Open();
OleDbCommand select = new OleDbCommand();
select.Connection = connection;
select.CommandText = "Select * From Accounts Where Lastname = '" + searchtb.Text + "'";
OleDbDataReader reader = select.ExecuteReader();
while (reader.Read())
{
listBox1.Items.Add(reader[1].ToString() + "," + reader[2].ToString());
}
connection.Close();
【问题讨论】:
-
顶部的一件事是错误的。它对 SQL 注入攻击完全开放。 认真考虑参数化该输入。
-
除了容易发生 SQL 注入。如果你想找到只有部分姓氏的人,你应该使用“Select * From Accounts Where Lastname Like '”+ searchtb.Text +“%'”