3 回答

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

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