猿问

SqlDataAdapter与SqlDataReader

使用SqlDataAdapter和SqlDataReader从数据库获取数据之间有什么区别?


我专门研究它们的优缺点以及它们的速度和内存性能。


谢谢


陪伴而非守候
浏览 652回答 3
3回答

慕虎7371278

SqlDataReader:将连接保持打开状态,直到完成操作(不要忘记关闭它!)。通常只能迭代一次对于更新回数据库没有太大用处另一方面,它:一次只在内存中记录一个记录,而不是整个结果集(这可能很大)在那一次迭代中速度最快使您可以更快地开始处理结果(一旦第一条记录可用)SqlDataAdapter / DataSet让您在连接完成后立即关闭连接,甚至可以自动为您关闭连接所有结果都在内存中可用您可以根据需要进行多次遍历,甚至可以按索引查找特定记录有一些内置的功能可以更新回数据库以:很多更高的内存使用您等到所有数据加载完毕后再使用其中任何一个因此,实际上这取决于您的工作,但是在需要仅由数据集支持的内容之前,我倾向于使用DataReader。SqlDataReader非常适合绑定到只读网格的常见数据访问情况。有关更多信息,请参阅正式的Microsoft文档。

白猪掌柜的

SqlDataAdapter通常用于填充DataSet或DataTable,因此在连接关闭后您将有权访问数据(断开访问)。SqlDataReader是一个仅前进和连接的快速游标,通常比填充DataSet / DataTable更快。此外,使用SqlDataReader,您一次可以处理一条记录,而不会在内存中保存任何数据。显然,使用DataTable或DataSet确实有内存分配开销。如果您不需要将数据保留在内存中,那么仅用于呈现内容,请使用SqlDataReader。如果要以断开连接的方式处理数据,请选择DataAdapter填充DataSet或DataTable。
随时随地看视频慕课网APP
我要回答