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。