访问器和行集合
若要设置和检索数据,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 模板访问器类型中的支持。
访问器类型 | 动态 | 处理参数 | Buffer | 多个访问器 |
---|---|---|---|---|
CAccessor |
否 | 是 | 用户 | 是 |
CDynamicAccessor |
是 | 否 | OLE DB 模板 | 否 |
CDynamicParameterAccessor |
是 | 是 | OLE DB 模板 | 否 |
CDynamicStringAccessor[A,W] |
是 | 否 | OLE DB 模板 | 否 |
CManualAccessor |
是 | 是 | 用户 | 是 |
行集合类型
OLE DB 模板支持三种类型的行集(参见上图):单行集(由 CRowset 实现)、BULK 行集(由 CBulkRowset 实现)和数组行集(由 CArrayRowset 实现)。 调用 MoveNext
时,单个行集将提取单个行句柄。 BULK 行集可以提取多个行句柄。 数组行集是可使用数组语法访问的行集。
下图显示行集类型。
行集类
架构行集不访问数据存储中的数据,而是访问有关数据存储的信息,称为元数据。 如果数据库结构在编译时未知且必须在运行时获取,则通常使用架构行集。