Datareader、DataAdapter、Dataset、DataView 的区别
Posted
技术标签:
【中文标题】Datareader、DataAdapter、Dataset、DataView 的区别【英文标题】:Difference between Datareader, DataAdapter, Dataset, DataView 【发布时间】:2011-10-26 16:19:54 【问题描述】:谁能解释一下 DataReader、DataAdapter、Dataset 和 DataView 之间的区别?
【问题讨论】:
【参考方案1】:快点,
DataReader 是一组结果的只进迭代器。当您不需要随机访问(换句话说,您不能倒退)时,这通常是处理记录的最有效方式。它可以“扩展”到任意数量的记录,至少在内存压力方面是这样,因为它一次只加载一条记录。获取 DataReader 的一种典型方法是使用 DbCommand 的 ExecuteReader
方法。
DataSet 表示一组 DataTable 对象。通常情况下,它只包含一个表,但如果您使用多个 SELECT 语句进行查询,则 DataSet 将为每个语句包含一个表。因为这是内存中的表示,所以您必须小心将多少数据拉入 DataSet。您可以使用 DataAdapter 的 Fill
方法“填充”数据集。
DataAdapter 是一种“管道”,可将数据从 DB 引擎汇集到 DataSet。这就是为什么您将为每种 DB 提供程序类型提供一个 DataAdapter 实现。一个数据集,许多提供者。
DataView 就像 DataTable 的虚拟子集。
【讨论】:
【参考方案2】:数据读取器
DataReader 用于从数据库中读取数据,在从数据库中获取数据时,它是一个只读和转发的面向连接的架构。 DataReader 用于遍历来自服务器的结果集,它一次读取一条记录,因为与数据集相比,内存消耗会更少,并且它会非常快速地获取数据。一般我们会使用ExecuteReader对象将数据绑定到datareader。
数据集
DataSet 是一种断开连接的定向架构,这意味着在处理数据集期间不需要活动连接,它是 DataTables 和表之间关系的集合。它用于保存包含数据的多个表。您可以选择数据表单表,基于表创建视图并询问子行的关系。 DataSet 还为您提供了丰富的功能,例如将数据保存为 XML 和加载 XML 数据。
数据适配器
DataAdapter 将充当 DataSet 和数据库之间的桥梁。此 dataadapter 对象用于从数据库中读取数据并将该数据绑定到数据集。 Dataadapter 是一种面向断开连接的架构。
【讨论】:
【参考方案3】:我建议您阅读 MSDN 文档或者购买一本书。这是一个简短的答案:
数据集是类似数据库结构的内存表示。它可以有一个或多个数据表并定义它们之间的关系、关键字段等。 数据表是单个数据库表的内存表示。您可以将其视为具有相同方式的列和行。 数据视图是数据表上的视图,有点像 sql 视图。它允许您对行进行过滤和排序 - 通常用于绑定到 Windows 窗体控件。【讨论】:
【参考方案4】:数据读取器
DataReader 就像一个只向前的记录集。它一次获取一行,因此与 DataSet(一次获取所有行)相比,网络成本非常低。 DataReader 是只读的,所以我们不能对它们进行任何事务。 DataReader 将是我们需要向用户显示不需要事务的数据的最佳选择。由于 DataReader 仅转发,因此我们无法随机获取数据。 .NET Data Providers 优化了数据读取器以处理大量数据。
数据集
DataSet 是数据库对象集合的内存表示,包括关系数据库模式的表。 与 DataReader 相比,DataSet 始终是一个需要大量内存空间的庞大对象。我们可以说 DataSet 是一个小型数据库,因为它将模式和数据存储在应用程序内存区域中。 DataSet 一次将数据源中的所有数据提取到其内存区域。这样我们就可以像查询数据库一样遍历对象来获取所需的数据了。
【讨论】:
以上是关于Datareader、DataAdapter、Dataset、DataView 的区别的主要内容,如果未能解决你的问题,请参考以下文章
使 SqlDataAdapter/Datareader “真正只读”
4. 题干:下列不是ADO.NET对象的是( )。 分数:2分 选项: A:数据适配器DataAdapter B:记录集Recordset C