2012-09-03 84 views
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)和comboBox(cbAlloyyTemper.Text)進行搜索的選項。我寫了三個不同的查詢還是可以將所有搜索條件放在一起?基於文本框選擇搜索Access數據庫

+1

你可以編寫一個'Search(string field,string searchPattern)'函數並從你的表單事件中調用它... – Marco

回答

0

第一個:從不在查詢中使用字符串,但使用Parameters

第二:我會創建3個不同的查詢,以便於以後調試。但一切都取決於你可以有多少疑問,以及你自己的舒適感。

+0

對不起,我是這個新手......你有沒有我能遵循的例子? – user1487121

+0

我只需要三個搜索查詢作業號,日期和組合框... – user1487121

+0

@ user1487121:實際上沒有太多的實際顯示。 1)您需要了解執行哪個查詢,2)選擇該方法並運行查詢 – Tigran

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; 

現在,在數據表的狀態發生任何變化通過對你的GridView反映自動。

要查詢DataTable,您可以使用DataView。 DataView允許你用SQL Statment等參數搜索數據表。語法不在我的頭頂,但它是你需要看的方法。

使用DataViews查看查詢DataTables。互聯網上有很多例子。

在您的場景中,它最適合。

祝你好運。