数据适配器和数据读取器有啥区别?
Posted
技术标签:
【中文标题】数据适配器和数据读取器有啥区别?【英文标题】:what is the difference between data adapter and data reader?数据适配器和数据读取器有什么区别? 【发布时间】:2009-07-16 18:13:50 【问题描述】:数据适配器和数据读取器有什么区别?
【问题讨论】:
【参考方案1】:请看DataReader, DataAdapter & DataSet - When to use? :
ADO.NET 提供了两个中心数据 访问组件。优秀的东西 就是,它们在所有人中都很常见 数据库,无论是 SQL Server 还是其他 竞争数据库。它唯一的 要使用的命名空间,不同, 使用 SQL 以外的数据库时 服务器。
【讨论】:
只是提供一个链接?不是评论吗?【参考方案2】:DataReader 是从 DbCommand 对象的 ExecuteReader 方法返回的对象。它是每个结果集中行上的只进游标。使用 DataReader,您可以访问结果集的每一列,读取该集的所有行,如果有多个结果集,则前进到下一个结果集。
DataAdapter 是一个包含四个 DbCommand 对象的对象:一个用于 SELECT、INSERT、DELETE 和 UPDATE 命令。它通过 Fill 和 Update 方法在这些命令和 DataSet 之间进行调解。
【讨论】:
【参考方案3】:Data Reader 是一个在连接环境中使用的对象。 Data Adapter 是一个使用 Dataset 的 Disconnected 环境中使用的对象。
【讨论】:
【参考方案4】:DataReader
是一种从数据库中检索记录的更快方法。 DataReader
读取该列。 DataReader
需要实时连接,但 DataAdapter
需要断开连接。
【讨论】:
【参考方案5】:数据阅读器是一个对象,您可以通过它读取连续的数据流。这是一个仅向前的数据,您无法返回读取以前的数据。 数据集和数据适配器对象帮助我们在断开模式下工作。数据集是表的缓存内存表示。数据通过数据适配器从数据源填充到数据集。一旦数据集中的表被修改,这些变化就会被广播到数据库;数据适配器。
【讨论】:
【参考方案6】:这是一篇关于上述主题的好文章: Difference Between DataReader, DataSet, DataAdapter and DataTable in C#
简单来说主要区别:
Unlike classic ADO, which was primarily designed for tightly coupled client/server systems,ADO.NET was built with the disconnected world in mind, using DataSets/DataAdapter.
DataAdapter
遵循面向无连接的架构,这仅意味着您不必连接到数据源,而 DataReader
是面向连接的架构,这意味着它需要与数据源的活动连接才能运行。
DataAdapter
是一个中间层/中间件,它充当数据集和数据库之间的桥梁,而 DataReader
使用服务器端游标提供对数据的只进、只读访问(简单地说,它用于读取数据)。
使用DataSet
,我们可以在与数据源断开连接的情况下操作和更新DataSet's
的内容,并使用相关的DataAdapter
将任何修改后的数据发回处理,而DataReader
只能从数据库中读取数据而不能修改它。
DataAdapter
对象用于从数据库读取数据并将该数据填充到DataSet
,而DataReader
只是使用Read() method
读取数据。
DataAdapter
相对较慢,而使用 DataReader
可以通过在数据可用时立即检索数据以及(默认情况下)在内存中一次仅存储一行来提高应用程序性能,从而减少系统开销。
【讨论】:
【参考方案7】:数据适配器
DataAdapter 将充当 DataSet 和数据库之间的桥梁。此 dataadapter 对象用于从数据库中读取数据并将该数据绑定到数据集。 Dataadapter 是一种面向断开连接的架构。
数据读取器
DataReader 用于从数据库中读取数据,在从数据库中获取数据时,它是一个只读和转发的面向连接的架构。与数据集相比,DataReader 将非常快速地获取数据。一般我们会使用ExecuteReader对象将数据绑定到datareader
【讨论】:
以上是关于数据适配器和数据读取器有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
想问一下图数据库neo4j和spark下面的graphx有啥区别