OLE DB プロバイダー テンプレートのアーキテクチャ
データ ソースとセッション
OLE DB プロバイダーのアーキテクチャには、1 つのデータ ソース オブジェクトと 1 つ以上のセッションが含まれます。 データ ソース オブジェクトは、すべてのプロバイダーがインスタンス化する必要のある初期オブジェクトです。 コンシューマー アプリケーションは、データが必要になると、データ ソース オブジェクトを共同作成して、プロバイダーを開始します。 データ ソース オブジェクトによって (IDBCreateSession
インターフェイスを使って) 作成されたセッション オブジェクトを通して、コンシューマーはデータ ソース オブジェクトに接続します。 ODBC プログラマーは、データ ソース オブジェクトを HENV
と同じものと考え、セッション オブジェクトを HDBC
と同じものと考えることができます。
OLE DB プロバイダー ウィザードによって作成されるソース ファイルと共に、OLE DB テンプレートにはデータ ソース オブジェクトが実装されています。 セッションは、OLE DB の TSession
に対応するオブジェクトです。
必須とオプションのインターフェイス
OLE DB プロバイダー テンプレートによって、すべての必要なインターフェイスのあらかじめパッケージ化された実装が提供されます。 いくつかのオブジェクトの型については、OLE DB によって必須とオプションのインターフェイスが定義されています。
行オブジェクトとストレージ オブジェクトは、OLE DB プロバイダー テンプレートでは実装されていません。
次の表に、OLE DB 2.6 SDK のドキュメントに従って、上に挙げたオブジェクトの必須とオプションのインターフェイスの一覧を示します。
コンポーネント | Interface | コメント |
---|---|---|
データ ソース (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 プロバイダー テンプレートでは直接サポートされていません (つまり、ユーザーが独自のオブジェクトを作成します)。 |
詳細については、次のトピックを参照してください。