2016-07-15 2 views
-2

텍스트 상자에 여러 입력과 함께 검색 버튼을 클릭하려고합니다. 나는 주위를 둘러 보았고 다른 방법을 시도했지만 어떻게 든 잘 풀리지 않았다.여러 검색 필터에 액세스

private void btn_table_Click(object sender, EventArgs e) { 
    try { 
     connection.Open(); 

     OleDbCommand command = new OleDbCommand(); 
     command.Connection = connection; 

     string query = "select [Name],[Sex],[Number] from RecordsSheet [Name] like('" + textBox1.Text + "%'),[Sex]=('" + textBox2.Text + "%'),[Number]=('" + textBox3.Text + "%'"); 

     command.CommandText = query; 

     OleDbDataAdapter da = new OleDbDataAdapter(command); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     dataGridView1.DataSource = dt; 

     connection.Close(); 
    } 
    catch (Exception ex) { 
     MessageBox.Show("Error " + ex); 
    } 
} 

답변

3

현재 동일한 조작에서 같음 및 LIKE 구문을 혼합하고 있으므로 일부 잘못 구성된 쿼리가 발생하고 올바르게 사용할 수있는 WHERE 절이 없습니다.

를 사용하여 매개 변수화

특정 검색어가있는 경우, 쿼리 내에서 미리 정의하여 LIKE 섹션의 매개 변수로에 추가하는 것을 고려해 다음과 함께 당신의 매개 변수를 추가 다음

// Add your properties using parameters 
var query = "SELECT [Name],[Sex],[Number] FROM RecordsSheet WHERE [Name] LIKE ? AND [Sex] LIKE ?,[Number] LIKE ?"; 

검색어를 작성하는 데 필요한 와일드 카드 번호 :

OleDbDataAdapter da = new OleDbDataAdapter(command); 
// Set your parameters 
da.SelectCommand.Parameters.AddWithValue("p1",textBox1.Text + "*"); 
da.SelectCommand.Parameters.AddWithValue("p2",textBox2.Text + "*"); 
da.SelectCommand.Parameters.AddWithValue("p3",textBox3.Text + "*"); 

이 방법을 사용하면 r 구문과 관련된 문제는 해결할 수 있지만 SQL 주입 공격과 같은 불쾌한 일로부터 보호해야합니다.

-1

결과 설명을 게시하지 않을 경우 .. 도움이 될 수 있습니다 "와 같은"와 [성]과 [수] 대체 "=",와 : 아래 클릭 이벤트에 대한 코드입니다.

관련 문제