次の方法で共有


CCustomSession (CustomSess.H)

CustomSess.H には OLE DB セッション オブジェクトの宣言と実装が含まれています。 データ ソース オブジェクトは、セッション オブジェクトを作成し、コンシューマーとプロバイダー間のメッセージ交換を表します。 1 つのデータ ソースに対して複数の同時セッションを開くことができます。 CCustomSession の継承リストは次のとおりです。

/////////////////////////////////////////////////////////////////////////
// CCustomSession
class ATL_NO_VTABLE CCustomSession :
   public CComObjectRootEx<CComSingleThreadModel>,
   public IGetDataSourceImpl<CCustomSession>,
   public IOpenRowsetImpl<CCustomSession>,
   public ISessionPropertiesImpl<CCustomSession>,
   public IObjectWithSiteSessionImpl<CCustomSession>,
   public IDBSchemaRowsetImpl<CCustomSession>,
   public IDBCreateCommandImpl<CCustomSession, CCustomCommand>

セッション オブジェクトは IGetDataSourceIOpenRowsetISessionPropertiesIDBCreateCommand を継承します。 IGetDataSource インターフェイスにより、セッションはそれを作成したデータソースを取得できます。 これは、作成したデータ ソースからプロパティを取得する必要がある場合や、データ ソースが提供できるその他の情報を取得する場合に便利です。 ISessionProperties インターフェイスは、セッションのすべてのプロパティを処理します。 IOpenRowsetIDBCreateCommand インターフェイスは、データベースの作業を行うために使われます。 プロバイダーがコマンドをサポートしている場合は、IDBCreateCommand インターフェイスを実装します。 コマンドを実行できるコマンド オブジェクトを作成するために使われます。 プロバイダーは常に IOpenRowset オブジェクトを実装します。 それを使うと、プロバイダーから行セットが生成されます。 プロバイダーからの既定の行セット (たとえば "select * from mytable") です。

ウィザードは 3 つのセッション クラスも生成します。CCustomSessionColSchemaCCustomSessionPTSchemaCCustomSessionTRSchema です。 これらのセッションは、スキーマ行セットに使われます。 プロバイダーは、スキーマ行セットを使って、コンシューマーがクエリを実行したりデータをフェッチしたりすることなく、メタデータをコンシューマーに返すことができます。 メタデータのフェッチは、プロバイダーの機能を検索するよりもはるかに高速になる場合があります。

OLE DB の仕様では、IDBSchemaRowset インターフェイスを実装するプロバイダーは、3 つのスキーマ行セット タイプ DBSCHEMA_COLUMNS、DBSCHEMA_PROVIDER_TYPES、DBSCHEMA_TABLES をサポートしている必要があります。 ウィザードでは、各スキーマ行セットの実装が生成されます。 ウィザードが生成する各クラスには、Execute メソッドが含まれています。 この Execute メソッドでは、テーブル、列、サポートしているデータ型に関するデータをプロバイダーに返すことができます。 このデータはコンパイル時にわかります。

関連項目

プロバイダー ウィザードで生成されたファイル