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

数据源和会话

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

提供程序体系结构图

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 Interfaces

概念

OLE DB 提供程序模板 (C++)