ADO.NET 中DataReader对象探讨研究.docVIP

  • 4
  • 0
  • 约4.59千字
  • 约 10页
  • 2018-11-03 发布于福建
  • 举报
ADO.NET 中DataReader对象探讨研究

ADO.NET 中DataReader对象探讨研究   摘要:DataReader对象是ADO.NET中的重要成员之一,常用来检索大量的数据。该文介绍了DataReader对象常用的属性、方法、特点及使用步骤,并对其应用进行了探讨。   关键词:.NET平台;ADO.NET;DataReader   中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)26-5999-03   1 DataReader对象概述   DataReader对象是ADO.NET数据模型中的一个重要成员,它是一个DBMS所特有的,常用来检索大量的数据。DataReader对象是以连接的方式工作,它只允许以只读、顺向的方式查看其中所存储的数据,并在ExecuteReader方法执行期间进行实例化。它每次的访问或操作只有一个记录保存在服务器的内存中。相比与DataSet而言DataReader具有快速的数据库访问、只进和只读、减少服务器资源等特点。   1.1 常用属性   Depth:设置阅读器浓度。对于SqlDataReader类,总是返回0。它指出当前行的嵌套浓度。外层表的浓度总是为0;内层表的浓度按1递增。大多数的数据阅读器,包括SqlDataReader和OleDbDataReader类,不支持多层嵌套,所以Depth属性总是为0。   FieldCount:只读,表示纪录中有多少字段。FieldCount属性获取DataReader对象中有几行数据,它的默认值为-1。如果未放在有效的记录集中,属性值则为0;否则为当前行中的列数。   sClosed:获得一个表明数据阅读器有没有关闭的值。   Item:只读,本对象是集合对象,以键值(Key)或索引值(Index)的方式取得纪录中某个字段的数据   1.2 常用方法   了解DataReader 对象有什么属性后,我们就可以利用DataReader 所提供的方法来取回资料了。其常用的方法:   Read: 让DataReader 读取下一笔记录,如果有读到数据则传回True,若没有纪录则传回False。   Close:关闭DataReader对象。关闭阅读器对象并不会自动关闭底层连接。   Get:用来读取数据集的当前行的某一列的数据。   GetName:取得指定字段的字段名称   GetOrdinal:取得指定字段名称在纪录中的顺序   GetValues:取得全部字段的数据   IsNull:用来判断字段内是否为Null 值   1.3 DataReader的特点   1)快速的数据库访问。相比之下DataReader对象的速度要比DataSet要快。因为DataSet在创建和初始化时,可能是一个或多个表的集合,并且DataSet具有向前,向后读写和浏览的能力,所以当创建一个DataSet对象时,会造成额外的开销。   2)只进和只读。当对数据库的操作没有太大的要求时,可以使用DataReader显示数据。这些数据可以与单个list-bound控件绑定,也可以填充List接口。当不需要复杂的数据库处理时,DataReader能够较快的完成数据显示。   3)减少服务器资源。因为DataReader并不是数据的内存的表示形式,所以使用DataReader对服务器占用的资源很少。   4)自定义数据库管理。DataReader对象可以使用Read方法来进行数据库遍历,当使用Read方法时,可以以编程的方式自定义数据库中数据的显示方式,当开发自定义控件时,可以将这些数据整合到HTML中,并显示数据。   1.4 创建DataReader对象的步骤   1)创建Connection对象。利用连接字符串创建Connection对象。   2)创建Command对象。利用SQL语句和Connection对象创建Command对象。   3)打开数据库,调用Command 对象的ExecuteReader()方法返回DataReader对象。注意,一定要先打开数据库,然后在返回DataReader对象。因为ExecuteReader()方法要求已经打开并且可用的数据库连接。   4)使用DataReader对象的Read()方法进行逐行读取,该方法返回Boolean类型的值,若有数据可读,则返回True.否则为,False。   dataReader.Read()   5)读取当前行某列的值。我们可以像使用数组那样,用方括号读取某列的值,如(type)dataReader[0],方括号中可以像数组一样使用列的索引,从0开始,也可以使用列名,因为取出的值是Object类型的,所以要进行类型转换。(string)d

文档评论(0)

1亿VIP精品文档

相关文档