2011-08-27 65 views
1

我正在使用OLEDB連接(Microsoft.ACE.OLEDB.12)從C#數據表中讀取記錄並將記錄放入Excel電子表格中。當從C#插入多條記錄到一個Excel電子表格時,OLEDB性能下降

我正在循環查找數據表中的每條記錄,並使用「Insert into table name values(」等構建OLEDBCommand.CommandText。我必須適當地格式化值,以便字符串/ char/integer/decimal是這一切都正常工作,並且我的電子表格已經創建,但是當有大量記錄要插入時(例如500,000加),那麼性能非常慢,而且需要永遠存在。是否有更快捷的方法來實現這一點比讀從我的C#的DataTable一個記錄的時間,確保SQL語句對數據類型正確的語法,並將其插入一次一個?

任何幫助表示讚賞

感謝

回答

1
+0

謝謝你的建議,我現在已經轉用準備好的發言和 – Dominic

+0

謝謝你的建議,我現在已經轉用準備好的語句作爲每鏈接,並削減了演出時間。 426,302條記錄現在需要4分23秒,而不是10分10秒,以顯示在Excel電子表格中。但是,它仍然需要很長時間來讀取數據表,爲每個數據行設置cmd.Parameters [0] .value,然後設置cmd.ExecuteNonQuery。要將1,082,171條記錄寫入Excel電子表格需要27分鐘,是否還有其他性能增強功能可以嘗試? – Dominic

+0

爲了查看是否還有其他改進,您應該在網站上發佈代碼(編輯原始問題)。你可以嘗試的是看看是否有任何語句可以移到數據表的循環之外,例如, OldeDbCommand對象應該在循環之前創建並準備一次。另外,由於準備好的陳述對你有所幫助,如果你接受我的回答,那麼我們都會獲得一些聲譽點。 –