数据适配器和数据读取器有什么区别?
答案 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将充当DataSet和数据库之间的桥梁。此dataadapter对象用于从数据库读取数据并将该数据绑定到数据集。 Dataadapter是一种面向断开连接的架构。
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
可以通过在数据可用时立即检索数据以及(默认情况下)一次仅在内存中存储一行来提高应用程序性能,从而减少系统开销。