数据适配器和数据读取器有啥区别?

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有啥区别

“VCD”与“DVD”有啥本质上的区别

在SAS中keep语句放在data后和放在set后有啥区别?

面向对象数据库和文档数据库有啥区别?

Netezza 中的表和外部表有啥区别?

c# ListView和DataGridView 有啥区别