2016-07-15 91 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