我有以下c#代碼,用於在連接到多個MS訪問數據庫表時過濾當前數據。這工作正常,但由於數據集ds太大,循環需要永遠返回檢查每行調用另一個mdb數據庫表。有沒有一種方法來優化這個刪除基於列過濾器的行。在多個ACCESS數據庫上過濾數據集以優化結果
string ABCACCESSDataSource = @"c:\websites\abc.mdb";
string XYZACCESSDataSource = @"c:\websites\xyz.mdb";
private void dataviewTable()
{
OleDbConnection Conn = DatabaseCommands.openDBConnection(ABCACCESSDataSource, this);
string query1 = select column1, column2, column3 from ABCTable where column2 = 'hello' order by column1;
Dataview dv;
OleDbDataAdapter da = new OleDbDataAdapter(query1, Conn);
DataSet ds = new System.Data.DataSet();
da.Fill(ds, "ABCTable");
foreach (DataRow dr in ds.Tables["ABCTable"].Rows)
checkValue = dr["ABCTable"].ToString();
{
resultvalue = getvalue(checkValue);
if(resultvalue == "unavailable")
{
dr.delete();
}
dv = ds.Tables["ABCTable"].DefaultView;
}
private string getvalue(string checkValuepassed)
{
OleDbConnection Conn2 = DatabaseCommands.openDBConnection(XYZACCESSDataSource, this);
string query2 = select columnX from XYZTable where columnY = 'test' AND columnZ = '" + checkValuepassed +"'" ;;
OleDbDataAdapter da2 = new OleDbDataAdapter(query2, Conn2);
ds2 = new DataSet();
da2.Fill(ds2);
resultVal = ds2.Tables[0].Rows[0][0].ToString() ;
return resultVal;
}
列名真的是Column1,Column2等..因爲我注意到你檢查列名='你好'什麼是表結構看起來像..我建議閱讀/谷歌搜索如何使用OLEDB與Access數據庫這看起來有點草率.. – MethodMan
列名像ID,名稱,分數等...這不是馬虎,它工作得很好。它只是表結果太大,我試圖優化這一點。 – user1701450
然後改變你的問題來描述..它會讓別人更容易在你的意見中給你更合理的答案 – MethodMan