DataReader vs DataSet—哪一个更适合你

ZDNet软件频道 时间:2003-09-25 作者:ZDNet China |  我要评论()
本文关键词:
由于大多数程序员已经习惯于只使用Recordset,这就导致了这样如下两个疑问:为什么在Microsoft.NET提供两种数据检索类(DataReader和DataSet)以及哪一个类最好用。
本文译自Builder.com,未经许可请勿转载在微软发布Microsoft .NET Framework之前,程序员访问数据库数据的选择并不多。那时候,我们常常ADO Recordset来保存查询结果和数据内容。最初,ADO Recordset要求一个恒定的数据库连接来维护对数据的访问。但随着时间的推移,它的功能逐步增强,现在它即支持离线应用程序又能够对扩展标记语言(eXtensible Markup Language,XML)提供部分支持。

ADO.NET的发布提供了一个新的数据检索对象模型。目前,它提供了两个用于获取检索结果的数据类以及其它用于保存各种数据内容的类。由于大多数程序员已经习惯于只使用Recordset,这就导致了这样如下两个疑问:为什么在Microsoft.NET提供两种数据检索类(DataReader和DataSet)以及哪一个类最好用。

什么是DataReader?

DataReader是一个查询数据库后返回的只读数据流。它一次只能包含一行数据,而且它有一个限制:只能前向的读取数据。DataReader的确支持对多个结果集的访问,但是一次只能访问一次(按照检索的顺序)。正如ADO的最初版本那样,一旦DataReader到数据库的连接中断,就无法再访问数据了,这就意味着在DataReader的使用期间,它与数据库之间的连接不能断开。只有当连接断开时,才可以访问输出参数或者返回值。

所有的DataReader的接口实现都是相同的,也就是说,所有的DataReader都应该提供相同的功能集合。每一个DataReader实现都是针对特定数据供应者(如SQL Server或者Oracle)而优化的。1.0版本的Microsoft .NET Framework包括一个针对SQL Server的System.Data.SqlClient.SqlDataReader,它还为较为普遍的OLEDB供应者提供了System.Data.OleDb.OleDbDataReader。1.1版本的.NET Framework进一步引入了SqlCeDataReader(用来连接Windows CE版的SQL Server)、OdbcDataReader(用于ODBC数据源)以及OracleDataReader(用于连接Oracle数据库)。你无须一定要使用Microsoft所提供的DataReader,各个数据库提供商常常都有自己的.NET提供。此外,你可以通过IdataReader接口实现自己的DataReader。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134