访问器和行集合
更新:2007 年 11 月
为了设置和检索数据,OLE DB 模板通过 CAccessorRowset 类使用访问器和行集合。此类可以处理多个不同类型的访问器。
访问器类型
所有访问器均从 CAccessorBase 派生。CAccessorBase 既提供参数又提供列绑定。
下图显示访问器类型。
访问器类
CAccessor 如果您在设计时知道数据库源的结构,则使用此访问器。CAccessor 将包含缓冲区的数据库记录静态绑定到数据源。
CDynamicAccessor 如果您在设计时知道数据库的结构,则使用此访问器。CDynamicAccessor 调用 IColumnsInfo::GetColumnInfo 以获取数据库列信息。它创建并管理访问器和缓冲区。
CDynamicParameterAccessor 使用此访问器处理未知的命令类型。在准备命令时,如果提供程序支持 ICommandWithParameters,CDynamicParameterAccessor 就可以从 ICommandWithParameters 接口获取参数信息。
CDynamicStringAccessor、CDynamicStringAccessorA 和 CDynamicStringAccessorW 如果您不知道数据库架构,则使用这些类。CDynamicStringAccessorA 检索 ANSI 字符串形式的数据;CDynamicStringAccessorW 检索 Unicode 字符串形式的数据。
CManualAccessor 通过此类可以使用任何所需的数据类型(只要提供程序可以转换此类型)。它既可以处理结果列,也可以处理命令参数。
下表概述了 OLE DB 模板访问器类型中的支持。
访问器类型 |
动态 |
处理参数 |
缓冲区 |
多个访问器 |
---|---|---|---|---|
CAccessor |
否 |
是 |
用户 |
是 |
CDynamicAccessor |
是 |
否 |
OLE DB 模板 |
否 |
CDynamicParameterAccessor |
是 |
是 |
OLE DB 模板 |
否 |
CDynamicStringAccessor[A,W] |
是 |
否 |
OLE DB 模板 |
否 |
CManualAccessor |
是 |
是 |
用户 |
是 |
行集合类型
OLE DB 模板支持三种行集合(见上图):单个行集合(由 CRowset 实现)、批量行集合(由 CBulkRowset 实现)和数组行集合(由 CArrayRowset 实现)。单个行集合在 MoveNext 被调用时获取单个行句柄。批量行集合可以获取多个行句柄。数组行集合是可以使用数组语法进行访问的行集合。
下图显示行集合类型。
行集合类
架构行集合不访问数据存储区中的数据,而是访问关于数据存储区的信息(称为元数据)。对于在编译时不知道数据库结构、但必须在运行时获取此结构的情况,通常需使用架构行集合。