2013-03-01 1 views
0

내 프로그램에 검색 버튼이 있습니다. 내가 원하는 것은 검색 할 때마다 lastname을 입력 할 것이고 lastname이 데이터베이스의 lastname과 동등 할 때 firstnamelastnamelistbox에 표시되고 listbox의 결과를 클릭 할 때마다 그 사람의 세부 정보가 textboxes에 표시됩니다. 문제는 동일한 성을 가진 사람이 있고 그 이름이 고유하게 나열되어 있지만 이름을 클릭하면 동일한 세부 정보가 textboxes에 나타납니다.OleDB Select 문

도와주세요. 귀하의 오류 가능성이 당신의 listbox_events에있을 수 있습니다, 당신은이 코드에서 오류가 그나마

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

+0

SQL 인젝션이 발생하기 쉽습니다. 성 (姓)의 일부를 가진 사람을 찾으려면 "성 * 같은 성을 선택하십시오"+ searchtb.Text + "% '"를 사용해야합니다 – echavez

답변

2

:

여기 내 코드입니다.

목록 상자 부분에 대한 코드를 표시하십시오.

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