为了账号安全,请及时绑定邮箱和手机立即绑定

SqlDataAdapter与SqlDataReader

SqlDataAdapter与SqlDataReader

陪伴而非守候 2019-12-09 11:18:28
使用SqlDataAdapter和SqlDataReader从数据库获取数据之间有什么区别?我专门研究它们的优缺点以及它们的速度和内存性能。谢谢
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

SqlDataReader:

  • 将连接保持打开状态,直到完成操作(不要忘记关闭它!)。

  • 通常只能迭代一次

  • 对于更新回数据库没有太大用处

另一方面,它:

  • 一次只在内存中记录一个记录,而不是整个结果集(这可能很大)

  • 在那一次迭代中速度最快

  • 使您可以更快地开始处理结果(一旦第一条记录可用)

SqlDataAdapter / DataSet

  • 让您在连接完成后立即关闭连接,甚至可以自动为您关闭连接

  • 所有结果都在内存中可用

  • 您可以根据需要进行多次遍历,甚至可以按索引查找特定记录

  • 有一些内置的功能可以更新回数据库

以:

  • 很多更高的内存使用

  • 您等到所有数据加载完毕后再使用其中任何一个

因此,实际上这取决于您的工作,但是在需要仅由数据集支持的内容之前,我倾向于使用DataReader。SqlDataReader非常适合绑定到只读网格的常见数据访问情况。

有关更多信息,请参阅正式的Microsoft文档。


查看完整回答
反对 回复 2019-12-09
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

SqlDataAdapter通常用于填充DataSet或DataTable,因此在连接关闭后您将有权访问数据(断开访问)。


SqlDataReader是一个仅前进和连接的快速游标,通常比填充DataSet / DataTable更快。


此外,使用SqlDataReader,您一次可以处理一条记录,而不会在内存中保存任何数据。显然,使用DataTable或DataSet确实有内存分配开销。


如果您不需要将数据保留在内存中,那么仅用于呈现内容,请使用SqlDataReader。如果要以断开连接的方式处理数据,请选择DataAdapter填充DataSet或DataTable。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 651 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信