选择DataSet还是DataReader

          在开发数据应用程序的时候,我们就避免不了与数据打交道。

           而在.net的开发平台上,我们理所应当的会想到Ado.net

           一、Ado.net概述

                 ADO.NET 是一组向 .NET Framework 程序员公开数据访问服务的类。ADO.NET 为创建分布式数据共享应用程序提供了一组丰富的组件。它提供了对关系数据、XML 和应用程序数据的访问。

                 上面是MSDN的原话,总结起来可以这样说,ado.net为用户提供了一组类,而通过些类,可以实现上面所说的连接到数据库、执行命令和检索结果等功能。

           DataSet

           ADO.NET DataSet 是专门为独立于任何数据源的数据访问而设计的。 因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。DataSet 包含一个或多个DataTable 对象的集合,这些对象由数据行和数据列以及有关DataTable 对象中数据的主键、外键、约束和关系信息组成。

          下图阐释了 .NET Framework 数据提供程序和 DataSet 之间的关系。

           选择DataSet还是DataReader

          DataReader

使用 DataReader 检索数据包括创建 Command 对象的实例,然后通过调用 Command.ExecuteReader 创建一个DataReader,以便从数据源检索行。

二、选择DataSet还是DataReader

在决定应用程序应使用 DataReader还是应使用 DataSet时,应考虑应用程序所需的功能类型。 使用DataSet 可执行以下操作:

  • 在应用程序中将数据缓存在本地,以便可以对数据进行处理。如果只需要读取查询结果,则 DataReader 是更好的选择。

  • 在层间或从 XML Web services 对数据进行远程处理。

  • 与数据进行动态交互,例如绑定到 Windows 窗体控件或组合并关联来自多个源的数据。

  • 对数据执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端使用。

如果不需要 DataSet 所提供的功能,则可以通过使用 DataReader 以只进、只读方式返回数据,从而提高应用程序的性能。 虽然DataAdapter 使用 DataReader 来填充DataSet 的内容但使用 DataReader 可以提升性能,因为这样可以节省DataSet 所使用的内存,并将省去创建 DataSet 并填充其内容所需的处理。 

总结:所以,在只是需要查询的结果的时候,考虑到效率,如果查询的数据量巨大,最好还是用dataReade——时间换空间。

            如果查询的数据量不是太大的话,最好还是选择用dataSet(同时,dataset也很多的优点)——空间换时间。

三、使用DataReader时注意

关闭 DataReader

每次使用完 DataReader 对象后都应调用 Close 方法。

如果 Command 包含输出参数或返回值,那么在 DataReader 关闭之前,将无法访问这些输出参数或返回值。

请注意,当 DataReader 打开时,该 DataReader 将以独占方式使用 Connection。 在原始 DataReader 关闭之前,将无法对 Connection 执行任何命令(包括创建另一个DataReader)。



你可能感兴趣的:(reader)