次の方法で共有


OLE DB プロバイダ テンプレートのアーキテクチャ

更新 : 2007 年 11 月

データ ソースとセッション

OLE DB プロバイダ アーキテクチャは、1 つのデータ ソース オブジェクトと 1 つ以上のセッションを含んでいます。データ ソース オブジェクトは、すべてのプロバイダがインスタンスとして起動する必要のある初期オブジェクトです。コンシューマ アプリケーションは、データを必要とする場合にデータ ソース オブジェクトを再作成してプロバイダを起動します。データ ソース オブジェクトは、IDBCreateSession インターフェイスを使用して、コンシューマがデータ ソース オブジェクトに接続するためのセッション オブジェクトを作成します。データ ソース オブジェクトとセッション オブジェクトは、ODBC の HENVHDBC にそれぞれ相当します。

プロバイダ アーキテクチャ グラフィック

OLE DB テンプレートは、OLE DB プロバイダ ウィザードによって作成されるソース ファイルを使用して、データ ソース オブジェクトを実装します。セッションは、OLE DB の TSession に相当するオブジェクトです。

必須インターフェイスと省略可能なインターフェイス

OLE DB プロバイダ テンプレートは、すべての必須インターフェイスに対してあらかじめパッケージ化された実装を提供します。いくつかの種類のオブジェクトに対して、必須インターフェイスおよび省略可能なインターフェイスが OLE DB により定義されています。

OLE DB プロバイダ テンプレートは、行オブジェクトとストレージ オブジェクトを実装しないことに注意してください。

OLE DB Version 2.7」に従って、上記オブジェクトの必須インターフェイスと省略可能なインターフェイスの一覧を次に示します。

コンポーネント

インターフェイス

説明

データ ソース (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

セッション オブジェクトは、コンシューマとプロバイダ間の 1 回のやり取りを表します。これは、多くのセッションが同時にアクティブになる可能性があるという点で 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 プロバイダ テンプレート (C++)

参照

OLE DB Interfaces