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)和一个comboBox(cbAlloyyTemper.Text)进行搜索。我是否写了三个不同的查询,或者所有的搜索条件都可以在一起?
答案 0 :(得分:0)
首先:从不在查询中使用字符串,但使用Parameters。
第二:我会创建3个不同的查询,以便以后轻松调试。但一切都取决于你可以拥有多少查询,以及你自己的舒适感。
答案 1 :(得分:0)
这根本不是我这样做的方式。
如果您在每次生成每个查询时查看同一个表,那么您不希望每次都查询数据库。相反,您应该将数据加载到数据表中,然后每次在内存中而不是数据库中查询数据表。
您需要创建一个Binding Source,然后将此对象的数据源设置为Data Table对象。
对于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;
现在,数据表状态的任何变化都会自动反映到您的gridview。
要查询DataTable,您可以使用DataView。 DataView允许您使用SQL Statment等参数搜索Datatable。语法不是我的头脑,但它是你需要看的方法。
使用DataViews查看DataTables。互联网上有很多例子。
在您的方案中,它最适合。
祝你好运。