您的位置:首页 > 其它

选择DataSet还是DataReader

2012-02-06 09:53 239 查看
在开发数据应用程序的时候,我们就避免不了与数据打交道。

而在.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 之间的关系。






DataReader

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

二、选择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)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: