首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SqlDataAdapter vs SqlDataReader

SqlDataAdapter vs SqlDataReader
EN

Stack Overflow用户
提问于 2009-11-05 05:30:06
回答 3查看 128.7K关注 0票数 139

使用SqlDataAdapter和SqlDataReader从数据库获取数据有什么不同?

我特别研究了它们的优点和缺点以及它们的速度和内存性能。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2009-11-05 05:36:23

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

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

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

如果你不需要将你的数据保存在内存中,那么只为了渲染东西,使用SqlDataReader。如果您想以断开连接的方式处理数据,请选择填充DataSet或DataTable的DataAdapter。

票数 16
EN

Stack Overflow用户

发布于 2009-11-05 05:37:00

如果要从数据库填充内存中的数据集/数据表,请使用SqlDataAdapter。然后,您可以灵活地关闭/释放连接,在内存中传递datatable/set。然后,您可以操作数据,并结合使用数据适配器和InsertCommand/UpdateCommand将其持久化到DB中。

如果想要快速、低内存占用的数据访问,而不需要灵活性,例如在您的业务逻辑中传递数据,则可以使用SqlDataReader。这对于快速、低内存使用率的大数据量检索更为理想,因为它不会一次性将所有数据加载到内存中-使用SqlDataAdapter方法,DataSet/DataTable将填充所有数据,因此如果有很多行和列,将需要大量内存来容纳。

票数 11
EN

Stack Overflow用户

发布于 2019-08-13 20:03:23

Fill函数在内部使用DataReader。如果您考虑的是“哪一个更高效?”,那么在一个紧凑的循环中使用一个逐条记录地填充集合记录的DataReader很可能与使用DataAdapter.Fill在系统上的负载相同。

(System.Data.dll,System.Data.Common.DbDataAdapter,FillInternal。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1676753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档