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 提供程序模板不直接支持此对象(即,你创建自己的对象)。 |
有关详情,请参阅以下主题: