访问器和行集合

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

访问器类型

所有访问器都派生自 CAccessorBaseCAccessorBase 同时提供参数和列绑定。

下图显示访问器类型。

显示访问器类型之间的关系的关系图。
访问器类

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

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

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

  • CDynamicStringAccessorCDynamicStringAccessorACDynamicStringAccessorW:如果不了解数据库架构,请使用这些类。 CDynamicStringAccessorA 以 ANSI 字符串形式检索数据;CDynamicStringAccessorW 以 Unicode 字符串形式检索数据。

  • CManualAccessor:借助此类,如果提供程序可以转换类型,则你可以使用任何所需的数据类型。 它同时处理结果列和命令参数。

下表总结了 OLE DB 模板访问器类型中的支持。

访问器类型 动态 处理参数 Buffer 多个访问器
CAccessor 用户
CDynamicAccessor OLE DB 模板
CDynamicParameterAccessor OLE DB 模板
CDynamicStringAccessor[A,W] OLE DB 模板
CManualAccessor 用户

行集合类型

OLE DB 模板支持三种类型的行集(参见上图):单行集(由 CRowset 实现)、BULK 行集(由 CBulkRowset 实现)和数组行集(由 CArrayRowset 实现)。 调用 MoveNext 时,单个行集将提取单个行句柄。 BULK 行集可以提取多个行句柄。 数组行集是可使用数组语法访问的行集。

下图显示行集类型。

显示行集类型之间的关系的关系图。
行集类

架构行集不访问数据存储中的数据,而是访问有关数据存储的信息,称为元数据。 如果数据库结构在编译时未知且必须在运行时获取,则通常使用架构行集。

另请参阅

OLE DB 使用者模板