毕业论文
数据。然而,这种优化也有些副作用,例如,只能以串行方式一次读取一行数据。不能读完两行后再返回去读取第一行。通常,可以用DbDataReader对象(更确切地说,是数据阅读器的子类对象)来提取要使用的行数据,并将其存储在其他对象中。例如,可以读取一个结果集中的每行,将其存储到在自定义集合或泛型列表对象中的自定义类中。
与命令对象一样,很多时候数据阅读器对象是由命名空间下的其他类使用的,用户不必直接使用它们。
图3.2.3说明了如何在数据库应用程序中使用数据阅读器。
要使用数据阅读器对象,首先必须调用DbDataReader.Read()方法选择结果集中的第一行。可不断调用该方法来移动数据阅读器,使数据阅读器像结果集中的游标一样总是指向一行。获取一行时,Read()方法返回true;否则返回false—如当所有行都已经读完时。也可以用DbDataReader. HasRows属性来判断结果集中是否还有其他行。
图3.2.4 DbDataReader类
很多属性和方法可用于检查当前选中的行。DbDataReader.FieldCount查看当前行包含多少列,并用DbDataReader的重载索引器访问各列。如果知道要访问的列名,可用基于字符串的索引器来获得列值,也可以使用基于整数的索引器通过位置获得列。在这两种情况下,这种方法都将返回object值,可将其转化为其他类型的数据。
也可以使用DbDataReader提供的多个方法直接获得类型化数据,如GetString()和GetInt32()分别将指定列以string和int值返回,列通过其索引选择。要使用这