2013-03-01 57 views
0

我的程序中有一個搜索按鈕。我想要的是每次搜索時我都會輸入lastname,並且當lastname等於數據庫中的任何lastname時,該人的firstnamelastname將顯示在listbox中,並且每當我單擊listbox中的結果該人的詳細信息將顯示在textboxes中。問題是,當有姓氏相同的人,他們的名字是唯一列出的,但是當我點擊姓名時,相同的細節出現在textboxesOleDB Select Statement

請幫忙。

這裏是我的代碼:

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(); 
+3

有一件事是對的,這是錯的。它對** SQL注入攻擊**是開放式的。 *認真*考慮參數化該輸入。 – WhozCraig 2013-03-01 02:18:25

+0

除了SQL注入容易。如果你想找到只有部分姓氏的人,你應該使用「Select * From Accounts Where Lastname Like'」+ searchtb.Text +「%'」 – echavez 2013-03-01 07:16:11

回答

2

您不要在這段代碼有任何錯誤,你的錯誤都不可能對你listbox_events。

顯示列表框部分的代碼。

0
cFat_items2 = new OleDbDataAdapter(" 
     SELECT COUNT(Fat_Items.i_num) AS Count_i_num, Fat_Items.i_num, g.i_num 
     FROM Fat_Items INNER JOIN Fat_Items AS g ON Fat_Items.fat_nr = g.fat_nr 
     WHERE Fat_Items.i_num = '" + this.kLDataSet.Fat_Items.Rows[i].ItemArray[0].ToString() + "' 
     AND g.i_num = '" + this.kLDataSet.Fat_Items.Rows[j].ItemArray[0].ToString() + "' 
     GROUP BY Fat_Items.i_num, g.i_num HAVING COUNT(Fat_Items.i_num)>='" + Support + "'", con); 

cFat_items2.Fill(dFat_items2);