OLE DB 提供程序模板体系结构

数据源和会话

OLE DB 提供程序体系结构包括数据源对象和一个或多个会话。 数据源对象是每个提供程序必须实例化的初始对象。 当使用者应用程序需要数据时,它会共同创建数据源对象来启动提供程序。 数据源对象创建会话对象(使用 IDBCreateSession 接口),使用者通过该对象连接到数据源对象。 ODBC 程序员可以将数据源对象视为等效于 HENV,将会话对象视为等效于 HDBC

Provider architecture diagram.

OLE DB 模板与 OLE DB 提供程序向导创建的源文件一起实现数据源对象。 会话是对应于 OLE DB TSession的对象。

必需接口和可选接口

OLE DB 提供程序模板为所有必需的接口提供预打包的实现。 必需接口和可选接口由 OLE DB 针对多种类型的对象定义:

OLE DB 提供程序模板不实现行和存储对象。

下表根据 OLE DB 2.6 SDK 文档列出了上述对象的必需接口和可选接口。

组件 接口 注释
数据源 (CDataSource) [必需] IDBCreateSession

[必需] IDBInitialize

[必需] IDBProperties

[必需] IPersist

[可选] IConnectionPointContainer

[可选] IDBAsynchStatus

[可选] IDBDataSourceAdmin

[可选] IDBInfo

[可选] IPersistFile

[可选] ISupportErrorInfo
从使用者连接到提供程序。 该对象用于指定连接的属性,例如用户 ID、密码和数据源名称。 该对象还可用于管理数据源(创建、更新、删除、表等)。
会话 (CSession) [必需] IGetDataSource

[必需] IOpenRowset

[必需] ISessionProperties

[可选] IAlterIndex

[可选] IAlterTable

[可选] IBindResource

[可选] ICreateRow

[可选] IDBCreateCommand

[可选] IDBSchemaRowset

[可选] IIndexDefinition

[可选] ISupportErrorInfo

[可选] ITableCreation

[可选] ITableDefinition

[可选] ITableDefinitionWithConstraints

[可选] ITransaction

[可选] ITransactionJoin

[可选] ITransactionLocal

[可选] ITransactionObject
会话对象是使用者和提供程序之间的单个对话。 这类似于 ODBC HSTMT,因为可以有多个同时处于活动状态的会话。

会话对象是用于获取 OLE DB 功能的主要链接。 若要访问命令、事务或行集对象,请浏览会话对象。
行集 (CRowset) [必需] IAccessor

[必需] IColumnsInfo

[必需] IConvertType

[必需] IRowset

[必需] IRowsetInfo

[可选] IChapteredRowset

[可选] IColumnsInfo2

[可选] IColumnsRowset

[可选] IConnectionPointContainer

[可选] IDBAsynchStatus

[可选] IGetRow

[可选] IRowsetChange

[可选] IRowsetChapterMember

[可选] IRowsetCurrentIndex

[可选] IRowsetFind

[可选] IRowsetIdentity

[可选] IRowsetIndex

[可选] IRowsetLocate

[可选] IRowsetRefresh

[可选] IRowsetScroll

[可选] IRowsetUpdate

[可选] IRowsetView

[可选] ISupportErrorInfo

[可选] IRowsetBookmark
行集对象是数据源中的数据。 该对象用于该数据的绑定以及对数据的任何基本操作(更新、提取、移动和其他操作)。 始终有一个行集对象用于保留和操作数据。
命令 (CCommand) [必需] IAccessor

[必需] IColumnsInfo

[必需] ICommand

[必需] ICommandProperties

[必需] ICommandText

[必需] IConvertType

[可选] IColumnsRowset

[可选] ICommandPersist

[可选] ICommandPrepare

[可选] ICommandWithParameters

[可选] ISupportErrorInfo

[可选] ICommandStream
命令对象处理对数据的操作(如查询)。 它可以处理参数化或非参数化语句。

命令对象还负责处理参数和输出列的绑定。 绑定是一个结构,其中包含有关应如何检索行集中列的信息。 它包含序号、数据类型、长度和状态等信息。
事务(可选) [必需] IConnectionPointContainer

[必需] ITransaction

[可选] ISupportErrorInfo
事务对象定义数据源上的原子工作单元,并确定这些工作单元的相互关联方式。 OLE DB 提供程序模板不直接支持此对象(即,你创建自己的对象)。

有关详情,请参阅以下主题:

另请参阅

OLE DB 提供程序模板
OLE DB 接口