ADO.NET有很多值得学习的地方,这里我们主要介绍DataReader对象提供方法,可以读取通过在数据源执行命令获得的结果集,并且是只读的、只向前递进的行数据流,包括介绍DataReader对象遍历数据等方面。这个对象在读取数据方面的性能最好。
#T#Command对象可以对数据源的数据直接操作,但是如果执行的是要求返回数据结果集的查询命令或存储过程,需要先获取数据结果集的内容,然后再进行处理或输出,这就需要DataReader对象来配合。DataReader对象提供一个只读的、单向的游标,用于访问结果集的行数据。因为内存中每次仅有一个数据行,所以DataReader对象需要的开销很小,效率很高。这里还得提一下Command对象对数据源的数据直接操作而不要求返回数据结果集的情况,这时就不需要使用ADO.NET DataReader对象,而是使用ExecuteNonQuery()方法完成对数据源数据的直接操作。
客户端应用程序要向数据库中插入学生数据信息。将数据值写在SQL命令中或者传递给存储过程的参数,然后调用Command对象的ExecuteNonQuery()方法,学生数据就插入到数据库了ExecuteNonQuery()方法可以返回受影响的行数,如果插入一个学生记录成功了,返回的行数就应该是1,不成功就返回-1。通过返回的受影响行数,可以判断是否成功。这个应用程序就没有使用DataReader对象。
ADO.NET DataReader对象不能直接使用构造函数实例化。必须通过Command对象的ExecuteReader()方法来生成。DataReader对象最主要的方法是Read()方法,用来检索行,然后用下标来访问行中的字段。在DataReader对象遍历数据记录时,数据连接必须保持打开状态,知道DataReader对象被关闭。
客户端应用程序需要数据源提供数据时,发送查询命令到数据源。由数据源进行查询处理,返回给客户端一个只读、只进的记录集。对这个记录集的操作就是利用DataReader对象只读和只进访问方式进行的。每读一个数据就向下一条记录转移,直至记录集末尾,并且得到的数据是只读的,不能修改。整个获取数据过程需要客户端应用程序与数据源之间保持永久连接。.NET提供程序及其ADO.NET DataReader类,请参见表:
提供程序 |
DataReader类 |
SQL数据提供程序 |
SqlDataReader |
OLE DB数据提供程序 |
OleDbDataReader |
Oracle数据提供程序 |
OracleDataReader |
ODBC数据提供程序 |
OdbcDataReader |