访问器和行集合

更新:2007 年 11 月

为了设置和检索数据,OLE DB 模板通过 CAccessorRowset 类使用访问器和行集合。此类可以处理多个不同类型的访问器。

访问器类型

所有访问器均从 CAccessorBase 派生。CAccessorBase 既提供参数又提供列绑定。

下图显示访问器类型。

访问器类

访问器类型

  • CAccessor   如果您在设计时知道数据库源的结构,则使用此访问器。CAccessor 将包含缓冲区的数据库记录静态绑定到数据源。

  • CDynamicAccessor   如果您在设计时知道数据库的结构,则使用此访问器。CDynamicAccessor 调用 IColumnsInfo::GetColumnInfo 以获取数据库列信息。它创建并管理访问器和缓冲区。

  • CDynamicParameterAccessor   使用此访问器处理未知的命令类型。在准备命令时,如果提供程序支持 ICommandWithParametersCDynamicParameterAccessor 就可以从 ICommandWithParameters 接口获取参数信息。

  • CDynamicStringAccessorCDynamicStringAccessorACDynamicStringAccessorW   如果您不知道数据库架构,则使用这些类。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 被调用时获取单个行句柄。批量行集合可以获取多个行句柄。数组行集合是可以使用数组语法进行访问的行集合。

下图显示行集合类型。

行集合类

RowsetType 图

架构行集合不访问数据存储区中的数据,而是访问关于数据存储区的信息(称为元数据)。对于在编译时不知道数据库结构、但必须在运行时获取此结构的情况,通常需使用架构行集合。

请参见

概念

OLE DB 使用者模板 (C++)