访问多个搜索过滤器

时间:2016-07-15 18:10:20

标签: c# filter access

我正在尝试单击文本框上有多个输入的搜索按钮。 我环顾四周,尝试了不同的方法,但不知怎的,它没有成功。以下是点击事件的代码:

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

2 个答案:

答案 0 :(得分:3)

您目前正在对相同的操作混合使用equals和LIKE语法,这将导致一些错误形成的查询,以及缺少WHERE子句以正确使用它们。

使用参数化

如果您有特定的搜索字词,请考虑将其作为参数添加到您的查询中预定义的LIKE部分:

<form id="form1" runat="server">
<div>
    <p>This is MySite.Master.</p>
    <p>
        <asp:LinkButton ID="goto1" runat="server" OnClick="goto1_Click">Go To WebForm1</asp:LinkButton>
    </p>
    <p>
        <asp:LinkButton ID="goto2" runat="server" OnClick="goto2_Click">Go To WebForm2</asp:LinkButton>
    </p>

    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
    </asp:ContentPlaceHolder>
</div>
</form>


protected void goto1_Click(object sender, EventArgs e) {
    Response.Redirect("WebForm1.aspx");
}

protected void goto2_Click(object sender, EventArgs e) {
    Response.Redirect("WebForm2.aspx");
}



public partial class WebForm1 : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {

        if (Page.IsPostBack) {

        }
    }
}



public partial class WebForm2 : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {

        if (Page.IsPostBack) {

        }
    }
}

然后添加参数以及必要的通配符以构建查询:

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

这种方法不仅可以解决与语法相关的问题,而且还可以帮助您免受SQL注入攻击等令人讨厌的问题。

答案 1 :(得分:-1)

使用[Sex]和[Number]将“=”替换为“like”,这可能会有所帮助.. 如果没有发布结果说明。