3 回答

TA貢獻1802條經驗 獲得超4個贊
SqlDataReader:
將連接保持打開狀態(tài),直到完成操作(不要忘記關閉它!)。
通常只能迭代一次
對于更新回數(shù)據(jù)庫沒有太大用處
另一方面,它:
一次只在內存中記錄一個記錄,而不是整個結果集(這可能很大)
在那一次迭代中速度最快
使您可以更快地開始處理結果(一旦第一條記錄可用)
SqlDataAdapter / DataSet
讓您在連接完成后立即關閉連接,甚至可以自動為您關閉連接
所有結果都在內存中可用
您可以根據(jù)需要進行多次遍歷,甚至可以按索引查找特定記錄
有一些內置的功能可以更新回數(shù)據(jù)庫
以:
很多更高的內存使用
您等到所有數(shù)據(jù)加載完畢后再使用其中任何一個
因此,實際上這取決于您的工作,但是在需要僅由數(shù)據(jù)集支持的內容之前,我傾向于使用DataReader。SqlDataReader非常適合綁定到只讀網(wǎng)格的常見數(shù)據(jù)訪問情況。
有關更多信息,請參閱正式的Microsoft文檔。

TA貢獻1893條經驗 獲得超10個贊
SqlDataAdapter通常用于填充DataSet或DataTable,因此在連接關閉后您將有權訪問數(shù)據(jù)(斷開訪問)。
SqlDataReader是一個僅前進和連接的快速游標,通常比填充DataSet / DataTable更快。
此外,使用SqlDataReader,您一次可以處理一條記錄,而不會在內存中保存任何數(shù)據(jù)。顯然,使用DataTable或DataSet確實有內存分配開銷。
如果您不需要將數(shù)據(jù)保留在內存中,那么僅用于呈現(xiàn)內容,請使用SqlDataReader。如果要以斷開連接的方式處理數(shù)據(jù),請選擇DataAdapter填充DataSet或DataTable。
- 3 回答
- 0 關注
- 710 瀏覽
添加回答
舉報