2012-06-11 22 views
0

好吧,繼承人我的方案 - 我想查詢本地數據庫並將GUID選擇查詢的結果存儲到數組中。作爲MySQL Select Statement的一部分的C#數組?

我會再像查詢遠程服務器返回結果集,它表明基本上任何新的記錄

這是查詢,但顯然在同一臺服務器上這僅適用。

SELECT * 
FROM remotetable remote 
WHERE NOT EXISTS 
     (
     SELECT 1 
     FROM localtable local 
     WHERE local.guid = remote.guid 
     ) 

並將此查詢的結果插入我的本地數據庫以合併它。

所以它會是這樣的

ArrayList myArrayList = new ArrayList(); 
OdbcConnection local = new OdbcConnection("DSN=local"); 
local.Open(); 
OdbcCommand guidSelect = new OdbcCommand("SELECT GUID from localtable",local); 
OdbcDataReader DbReader = guidSelect.ExecuteReader(); 
while (DbReader.Read()) 
{ 
String guid = (string)DbReader[0]; 
myArrayList.Add(guid); 
} 
local.Close(); 
OdbcConnection local = new OdbcConnection("DSN=remote"); 
"SELECT * FROM remotetable remote WHERE NOT EXISTS (SELECT 1 FROM"+ myArrayList() +" local  WHERE local.guid = remote.guid) 

顯然這不會因爲是工作,但它應該給出一個概述要實現提前

謝謝:)

+0

嘗試通過添加odbc參數以編程方式構建查詢。語法示例: http://stackoverflow.com/questions/5759845/how-to-use-odbcparameter-for-mysql –

回答

1

的ID是什麼只有這樣,我知道如何做到這一點實際上是通過這樣的Guids表格:

string guids = "''" + string.Join("'',''", myArrayList) + "''"; 
string query = string.format("SELECT * FROM remotetable WHERE NOT id IN ({0})", guids); 

在我看來,如果您試圖追蹤新記錄,則應該添加一個順序列,然後抓取高於本地那一列MAX的所有值。

+0

好的謝謝你的幫助 - 它實際上是乾淨的添加順序列,不知道爲什麼我沒有相反,請考慮這一點。問題即時看到的是,由於某些原因重複被插入本地表,即使他們不存在於他們雲DB – JazziJeff

+0

沒有檢查所有的代碼,可能會很難調試 –

+0

啊它是無關的,基本上我有一個計時器設置是重新啓動並在另一個通行證完成之前再次執行代碼 - 因此重複,現在再次解決 – JazziJeff