skyofking

----------------我就是永远的skyofking.

DataReader的主要属性

使用DataReader访问数据的时候,有必要介绍一下下面几个DataReader的属性:

FieldCount:查询记录当中的字段个数。

Read():返回一个布尔值,可以用来判断DataReader是否读取到记录

NextResult(),在用Command对象执行多个记录集时用到,将会读取下一个记录集

默认情况下,DataReader 在整个数据行可用时立即以行的形式加载传入数据。但是,对于二进制大对象 (BLOB) 则需要进行不同的处理,因为它们可能包含数十亿字节的数据,而单个行中无法包含如此多的数据。Command.ExecuteReader 方法具有一个重载,它将采用 CommandBehavior 参数来修改 DataReader 的默认行为。您可以将 SequentialAccess 传递到 ExecuteReader 方法来修改 DataReader 的默认行为,使其按照顺序在接收到数据时立即将其加载,而不是加载数据行。这是加载 BLOB 或其他大数据结构的理想方案。请注意,该行为可能会因数据源的不同而不同。例如,从 Microsoft Access 中返回 BLOB 会将整个 BLOB 加载到内存中,而不是按照顺序在接收到数据时立即将其加载。

在将 DataReader 设置为使用 SequentialAccess 时,务必要注意访问所返回字段的顺序。DataReader 的默认行为是在整个行可用时立即加载该行,这样可以在读取下一行之前按任何顺序访问所返回的字段。但是,当使用 SequentialAccess 时,必须按顺序访问由 DataReader 返回的字段。例如,如果查询返回三个列,其中第三列是 BLOB,则必须在访问第三个字段中的 BLOB 数据之前返回第一个和第二个字段的值。如果在访问第一个或第二个字段之前访问第三个字段,则第一个和第二个字段值将不再可用。这是因为 SequentialAccess 已修改 DataReader,使其按顺序返回数据,当 DataReader 已经读取超过特定数据时,该数据将不可用。

在访问 BLOB 字段中的数据时,请使用 DataReader GetBytes GetChars 类型化访问器,它们将用数据来填充数组。还可以对字符数据使用 GetString;但是为了节省系统资源,您可能不希望将整个 BLOB 值加载到单个字符串变量中。您可以指定要返回的特定数据缓冲区大小,以及从返回的数据中读取的第一个字节或字符的起始位置。GetBytes GetChars 将返回一个 long 值,它表示返回的字节或字符数。如果将一个空数组传递给 GetBytes GetChars,则返回的长值将是 BLOB 中字节或字符的总数。您可以选择将数组中的某个索引指定为所读取数据的起始位置
阅读更多
个人分类: web开发
上一篇对比DataSet 和 DataReader 对象
下一篇什么是存储过程,使用存储过程的优点
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭