0
private void btnSearchDB_Click(object sender, EventArgs e)
    {
        OleDbConnection accessConnect = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\ECM\ECM\ECM\ECM.mdb");
        DataTable dt = new DataTable();
        OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM ECMeasurements WHERE [Job Number] LIKE " + txtJobNumber.Text, accessConnect);

        da.Fill(dt); 
        dataGridView1.DataSource = dt;



    }

还有一些选项可以通过 Date.....(txtDate.Text) 和一个组合框 (cbAlloyyTemper.Text) 进行搜索。我是写三个不同的查询还是可以将所有搜索条件放在一起?

4

2 回答 2

0

这根本不是我会这样做的方式。

如果您每次生成每个查询时都在查看同一个表,那么您不希望每次都查询数据库。相反,您应该将数据加载到数据表中,然后每次查询内存中的数据表而不是数据库。

您需要创建一个绑定源,然后将此对象的数据源设置为您的数据表对象。

对于您的gridView,您将此对象的数据源设置为您的绑定源。

像这样:-

OleDbConnection accessConnect = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;       Data Source=C:\ECM\ECM\ECM\ECM.mdb");
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM ECMeasurements", accessConnect);

da.Fill(dt); 
BindingSource bs = new BindingSource();
bs.DataSource = dt;
dataGridView1.DataSource = bs;

现在,数据表状态的任何变化都会自动反映到您的网格视图中。

要查询 DataTable,您可以使用 DataView。DataView 允许您使用 SQL 语句等参数搜索 Datatable。语法不在我的脑海中,但它是您需要查看的方法。

查看使用 DataViews 查询 DataTables。网上有很多例子。

在您的情况下,它最适合。

祝你好运。

于 2012-09-04T07:28:55.987 回答
0

第一:不要在查询中使用字符串,而是使用参数

第二:我会创建 3 个不同的查询,以便之后进行调试。但这一切都取决于您可以查询多少,以及您自己的舒适感。

于 2012-09-03T19:02:33.520 回答