关闭

DataReader的主要属性

638人阅读 评论(0) 收藏 举报

使用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 中字节或字符的总数。您可以选择将数组中的某个索引指定为所读取数据的起始位置
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:227453次
    • 积分:3399
    • 等级:
    • 排名:第9863名
    • 原创:115篇
    • 转载:17篇
    • 译文:0篇
    • 评论:54条
    文章分类
    最新评论
    一气化三清