2011-05-05 55 views
1

對於我在c#中的當前項目,我需要將數據從SQL數據庫傳輸到Access數據庫。現在我使用SqlDataAdapter將數據加載到DataSet中。通過條目,我環路後並將其插入到Access-DB使用OLEDB:使用C將數據從SQL傳輸到Access#

// Load data from SQL 
DataSet ds = new DataSet(); 
SqlDataAdapter adapter = new SqlDataAdapter("select goes here", sqlConnection); 
adapter.Fill(ds); 

// Prepare the Insert Command 
oleDBCommand = "Insert into..."; 
oleDBCommand.Parameters.Add(new OleDbParameter(...)); 

// Insert every row from the DataSet 
for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
{ 
    // Update Parameters and Execute 
    oleDBCommand.Parameters[0].Value = ds.Tables[0].Rows[i].ItemArray[0]; 
    oleDBCommand.ExecuteNonQuery(); 
} 

這種方法工作得很好,但是感覺笨拙和緩慢的。所以我想知道是否有另一種更好的方法將數據從一個數據庫傳輸到另一個數據庫。

+2

你從SQL即將接入(不支持了) ......它可能是一件好事,它感覺笨拙而緩慢;) – Nathan 2011-05-05 07:20:47

+0

你是什麼意思,它感覺笨拙? – KaeL 2011-05-05 07:31:05

+0

感覺好像有一個更好的解決方案,而不是循環遍歷每一行,並調用一個insert語句:s – Syjin 2011-05-05 07:56:55

回答

1
  1. 使用SqlDataReader對象: SqlDataReader的運行速度比快的SqlDataAdapter
  2. 使用事務: 使用事務和每個命令綁定到這個交易。在完成插入命令後,提交可能運行得更快的事務。
+0

謝謝。這很有幫助,我會用它作爲答案,雖然它不是我正在尋找的... – Syjin 2011-05-05 08:21:26

+0

不客氣。你究竟在看什麼? – icaptan 2011-05-07 07:49:34

0

另一個想法:
如果它總是相同的Access數據庫,並從同一個表(或多個)總是導入您的數據,可以link the SQL Server tables in Access一次。

如果SQL Server表已鏈接,則可以像本地表一樣在MDB中使用它。
然後,你可以直接從鏈接表通過OLEDB通過Access數據庫中運行這個查詢插入本地表:

insert into LocalAccessTable (Column1, Column2) 
select Column1, Column2 
from LinkedSqlServerTable 
相關問題