DataReader、DataAdapter、DataSet和DataView之间的区别是什么?

22
有人能否解释一下DataReader、DataAdapter、Dataset和DataView之间的区别?
4个回答

38

简要而言:

  • DataReader是一种只能向前迭代访问结果集的类型。在你不需要随机访问记录时,通常是处理记录最有效的方法(也就是说不能向后跳)。由于它每次只加载一条记录,因此从内存压力方面来说,它可扩展到任意数量的记录。获取DataReader的一种典型方式是使用DbCommand的ExecuteReader方法。

  • DataSet代表一组DataTable对象。往往它只包含一个表格,但如果你使用多个SELECT语句进行查询,则DataSet将包含每个表。由于这是一个内存表示,所以你必须小心,控制好你将多少数据拉入DataSet中。可以使用DataAdapter的Fill方法向DataSet“填充”数据。

  • DataAdapter是一种将数据从数据库引擎传输到DataSet的“管道”。这就是为什么每个DB提供程序类型都会有一个DataAdapter实现。一个DataSet,多个提供程序。

  • DataView就像是一个DataTable的虚拟子集。


5

DataReader

DataReader用于从数据库读取数据,它是一种只读、连接导向的架构,在从数据库获取数据时进行迭代。 DataReader用于迭代来自服务器的结果集,并一次读取一条记录,因此内存消耗较少,并且与数据集相比,它会非常快地获取数据。通常我们会使用ExecuteReader对象将数据绑定到datareader上。

DataSet

DataSet是一种断开式的Orient架构,这意味着在使用数据集时不需要活动连接,并且它是一个包含数据表和表之间关系的集合。它用于保存多个带有数据的表。您可以从表中选择数据,基于表创建视图并通过关系请求子行。 DataSet还提供了丰富的功能,如将数据保存为XML并加载XML数据。

DataAdapter

DataAdapter将充当数据集和数据库之间的桥梁。该Dataadapter对象用于从数据库中读取数据并将该数据绑定到数据集上。 DataAdapter是一种断开式的架构。


2

我建议您阅读MSDN文档或购买一本书。以下是简短的答案:

  • 数据集是数据库结构的内存表示形式。它可以有一个或多个数据表,并定义它们之间的关系、键字段等。
  • 数据表是单个数据库表的内存表示形式。您可以将其视为以相同方式具有列和行。
  • 数据视图是数据表上的视图,有点像SQL视图。它允许您过滤和排序行 - 通常用于绑定到Windows窗体控件。

0

DataReader

DataReader类似于只向前的记录集。它一次只获取一行数据,因此与DataSet(一次获取所有行)相比,网络成本非常低。 DataReader是只读的,因此我们无法对其进行任何事务处理。当我们需要向用户显示不需要事务的数据时,DataReader将是最佳选择。由于DataReader是只向前的,因此我们无法随机获取数据。 .NET数据提供程序优化了datareader以处理大量数据。

DataSet

DataSet是数据库对象集合的内存表示,包括关系数据库模式的表格。 DataSet始终是一个庞大的对象,需要大量的内存空间,与DataReader相比。我们可以说DataSet是一个小型数据库,因为它将模式和数据存储在应用程序内存区域中。 DataSet一次从数据源获取所有数据到其内存区域。因此,我们可以遍历该对象以获取所需的数据,就像查询数据库一样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接