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

时间:2009-07-16 18:13:50

标签: c# .net ado.net

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

8 个答案:

答案 0 :(得分:10)

请参阅DataReader, DataAdapter & DataSet - When to use?

  

ADO.NET提供两个中央数据   访问组件。优秀的事情   就是这样,它们在所有人中都很常见   数据库,无论是SQL Server还是其他   竞争数据库。它唯一的   要使用的命名空间,有所不同,   使用SQL以外的数据库   服务器

答案 1 :(得分:8)

DataReader是从DbCommand对象的ExecuteReader方法返回的对象。它是每个结果集中行上的只向前游标。使用DataReader,您可以访问结果集的每一列,读取集合的所有行,如果有多个行,则前进到下一个结果集。

DataAdapter是一个包含四个DbCommand对象的对象:SELECT,INSERT,DELETE和UPDATE命令各一个。它通过Fill和Update方法在这些命令和DataSet之间进行调解。

答案 2 :(得分:4)

DataReader是从数据库中检索记录的更快捷方式。 DataReader读取列。 DataReader要求实时连接,但DataAdapter需要断开连接。

答案 3 :(得分:4)

Data Reader是连接环境中使用的对象。 数据适配器是使用数据集在断开连接的环境中使用的对象。

答案 4 :(得分:2)

数据读取器是一个对象,通过它您可以读取连续的数据流。它是一个仅向前的数据,您无法返回以读取以前的数据。 数据集和数据适配器对象帮助我们在断开连接模式下工作。数据集是表的高速缓存存储器表示。数据从数据源填充到数据集的数据集。一旦修改了数据集中的表,就会将更改广播到数据库中;数据适配器。

答案 5 :(得分:1)

的DataAdapter

DataAdapter将充当DataSet和数据库之间的桥梁。此dataadapter对象用于从数据库读取数据并将该数据绑定到数据集。 Dataadapter是一种面向断开连接的架构。

的DataReader

DataReader用于从数据库读取数据,在从数据库获取数据期间,它是一种只读取和转发的面向连接的体系结构。与数据集相比,DataReader将非常​​快速地获取数据。通常我们将使用ExecuteReader对象将数据绑定到datareader

答案 6 :(得分:0)

<强>的DataReader

DataReader仅在正向工作意味着无法再读取一次行读取,因此获取记录的速度很快。 Datareader始终需要Open连接来执行SQL命令。连接关闭后,您将无法从datareader读取数据。这就是它在SQL中用于连接模式的原因。

<强> DatAdapter

DataAdapter立即从Sql语句获取所有返回的行,然后将数据填充到DataSet或datatable中。因为这个数据适配器与datareader的比较很慢。 DataAdapter不会重新启动任何打开和关闭连接。意味着DataAdapter可以在Disconnected模式下工作。

更多示例阅读: - http://www.gurujipoint.com/2017/07/difference-between-dataadapter-and.html

答案 7 :(得分:0)

关于以上主题,这是一篇不错的文章: 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可以通过在数据可用时立即检索数据以及(默认情况下)一次仅在内存中存储一​​行来提高应用程序性能,从而减少系统开销。