2016-07-15 85 views
-2

我試圖單擊文本框上有多個輸入的搜索按鈕。 我環顧四周,嘗試不同的方法,但不知何故,它沒有工作。下面是爲Click事件的代碼:用[性]和[數字]替換「=」與「象」,可以幫助.. 如果不發佈結果說明訪問多個搜索過濾器

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

您目前正在將equals和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