更新:2007 年 11 月
为了设置和检索数据,OLE DB 模板通过 CAccessorRowset 类使用访问器和行集合。此类可以处理多个不同类型的访问器。
访问器类型
所有访问器均从 CAccessorBase 派生。CAccessorBase 既提供参数又提供列绑定。
下图显示访问器类型。
访问器类
.gif)
- 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 被调用时获取单个行句柄。批量行集合可以获取多个行句柄。数组行集合是可以使用数组语法进行访问的行集合。
下图显示行集合类型。
行集合类
.gif)
架构行集合不访问数据存储区中的数据,而是访问关于数据存储区的信息(称为元数据)。对于在编译时不知道数据库结构、但必须在运行时获取此结构的情况,通常需使用架构行集合。