2013-03-18 45 views
-2

我有多個相同的Access 2007數據庫(accdb文件),我想合併成一個使用Windows窗體使用C#代碼,但我不知道該怎麼辦這是因爲我是一個初學者在C# 數據庫是相同的,但我想保留所有數據到一個,因爲所有數據表只有一個或兩個行,因爲我使用訪問形式從我的大學不同學生問卷,他們給我他們的答案所以我必須一個接一個地打開所有文件,並且我想要創建一個Windows窗體應用程序,因爲我要從答案中獲取一些結果。合併多個Access數據庫到一個大的數據庫與C#代碼

+0

它的數據庫是相同的,那麼爲什麼你需要合併它們呢? – 2013-03-18 20:02:58

+0

數據庫是相同的,但我想保留所有數據到一個,因爲所有數據表只有一行或兩行,因爲我使用訪問表格來查詢來自我大學不同學生的問卷,並且他們向我發送了他們的答案,所以我必須逐個打開所有文件我想要一個Windows窗體應用程序,因爲我要從答案中得到一些結果。 – user2183831 2013-03-18 20:11:11

+0

(1)我們在談論多少個數據庫文件? (2)每個文件中有多少個表? – 2013-03-18 20:15:44

回答

1

我建議你採取以下步驟:

  1. 有一個表創建一個數據庫來保存最後的結果。該表應該具有與單個文件完全相同的結構,但具有主鍵字段 - 可以是數據庫文件的路徑,也可以是每行的其他唯一值(可以使用AutoNumber字段生成)。在任何情況下,您都可能需要額外的數據庫路徑列,特別是如果您需要防止多次重新讀取同一個數據庫文件。
  2. 使用OleDb提供程序打開與最終數據庫的ADO.NET連接。這需要a)創建一個OleDbConnection對象,b)創建在連接上運行的OleDbCommand對象,c)將命令對象的CommandText設置爲SQL語句,以及d)執行該命令。
  3. 你的SQL語句可能會是這個樣子:

    INSERT INTO desttable (pkfield, field1, field2 ...) 
    SELECT field1, field2 
    FROM sourcetable 
    

    sourcetable,也可以在不同的數據庫中的表像這樣:

    INSERT INTO desttable (pkfield, field1, field2 ...) 
    SELECT field1, field2 
    FROM sourcetable IN path\to\mdb 
    

    所以對於每個路徑,你可以建立SQL statemnt通過每次替換適當的路徑。

  4. 如果要遍歷特定文件夾中的所有mdb文件,可以使用名稱空間System.IO中的Directory類的EnumerateFiles方法。或者,您可以使用Windows.Forms命名空間中的OpenFileDialog打開一個對話框。
  5. 一旦你想出了你想要看到什麼樣的UI,綁定到這些數據應該是微不足道的。
+0

非常感謝你! – user2183831 2013-03-19 09:56:17

+0

這足夠嗎?或者你需要更多關於綁定到UI的細節?如果足夠了,請點擊回答旁邊的複選標記,將問題標記爲已回答。 – 2013-03-24 10:41:15

+0

插入qurey在MS-ACCESS中工作很好,但沒有在C#中工作我在c#中的文本框中顯示查詢,並在MS訪問中複製查詢並且工作 – user2183831 2013-03-25 13:04:49

相關問題