2011-09-23 51 views
0

我將大量記錄從數據庫導出到數據集,這可能是導致System.OutofMemory異常的原因。爲了防止這種情況,作爲第一步,我決定使用SQL Datareader。我擔心的是演示文稿不應該改變,並且BL中應該有最小的代碼更改,我應該在DL中編寫一個方法,它應該使用SQL讀取器檢索數據並填充數據集並返回BL。將SQL Datareader轉換爲C#中的數據集#

+0

你有沒有想過使用SqlDataAdapter.Fill(DataTable)? – Dani

+0

目前我只使用DataAdapter來填充記錄到數據集! – banupriya

+0

我明白了,您是想從表格中獲取所有數據還是僅記錄符合特定條件的記錄? – Dani

回答

2

您可以使用DataTable.Load()方法。

+1

我試圖使用DataReader獲取數據,而不是的DataAdapter,因爲我需要處理大量的數據。在使用ExecuteReader()之後,我將它加載到數據表中。所以這是否是一個好方法。 ? – kbvishnu

+0

@哈里 - 我建議Load()方法。 Fill()特別用於填充DataSet(添加一個或多個表),創建關係等。看看Scott Mitchell的文章 - http://www.4guysfromrolla.com/articles/050405-1.aspx – adatapost

1

無論你還是框架填充DataSet,都會產生OutOfMemoryException。 你必須return an IEnumerable並更改BL代碼來處理它。

或者,您可以嘗試設置DataTable.MinimumCapacity以避免內存碎片。

+0

+1,因爲我同意 - 通過數據讀取器進行如何幫助減少內存使用量?據推測,雖然可能會用一個看起來像DataTable的對象做一些瘋狂的事情,但實際上它內部有一個ienumerabe來返回行數據。這將是棘手的,但可以防止重新編碼BL的問題。 – Chris