次の方法で共有


アクセサーと行セット

OLE DB テンプレートでは、データの設定と取得に CAccessorRowset クラスを介してアクセサーと行セットを使います。 このクラスでは、さまざまな型のアクセサーを複数処理できます。

アクセサーの型

すべてのアクセサーは CAccessorBase から派生します。 CAccessorBase には、パラメーターと列の両方のバインドが用意されています。

アクセサーの型を次の図に示します。

アクセサー型間のリレーションシップを示す図。
アクセサーのクラス

  • CAccessor: 設計時にデータベース ソースの構造がわかっている場合は、このアクセサーを使います。 CAccessor を使って、バッファーを含むデータベース レコードをデータ ソースに静的にバインドできます。

  • CDynamicAccessor: 設計時にデータベースの構造がわかっていない場合は、このアクセサーを使います。 CDynamicAccessorIColumnsInfo::GetColumnInfo を呼び出し、データベースの列情報を取得します。 アクセサーとバッファーを作成し、管理します。

  • CDynamicParameterAccessor: 不明なコマンドの型を処理するには、このアクセサーを使います。 プロバイダーが ICommandWithParameters をサポートしている場合、コマンドを準備するときに、CDynamicParameterAccessor を使って ICommandWithParameters インターフェイスからパラメーター情報を取得できます。

  • CDynamicStringAccessorCDynamicStringAccessorACDynamicStringAccessorW: データベース スキーマが不明な場合は、これらのクラスを使います。 CDynamicStringAccessorA を使って ANSI 文字列としてデータを取得し、CDynamicStringAccessorW を使って Unicode 文字列としてデータを取得することができます。

  • CManualAccessor: このクラスを使うと、プロバイダーが変換できる型であれば、任意のデータ型を使用できます。 結果列とコマンド パラメーターの両方を処理できます。

OLE DB テンプレートのアクセサーの型でサポートされている内容を次の表に示します。

アクセサーの型 動的 パラメーターを処理する Buffer 複数のアクセサー
CAccessor いいえ はい User はい
CDynamicAccessor はい いいえ OLE DB テンプレート いいえ
CDynamicParameterAccessor イエス はい OLE DB テンプレート いいえ
CDynamicStringAccessor[A,W] 有効 いいえ OLE DB テンプレート いいえ
CManualAccessor イエス はい User はい

行セットの種類

OLE DB テンプレートは、3 種類の行セット (前の図を参照してください) をサポートしています。単一行セット (CRowset で実装)、バルク行セット (CBulkRowset で実装)、配列行セット (CArrayRowset で実装) です。 単一行セットの場合、MoveNext が呼び出されたときに、単一行ハンドルをフェッチします。 バルク行セットの場合、複数の行ハンドルをフェッチできます。 配列行セットは、配列構文を使ってアクセスできる行セットです。

行セットの種類を次の図に示します。

行セット型間のリレーションシップを示す図。
行セットのクラス

スキーマ行セットからは、データ ストア内のデータにアクセスするのではなく、データ ストアに関する情報 (メタデータと呼ばれます) にアクセスします。 通常、スキーマ行セットはコンパイル時にデータベースの構造がわからず、実行時に取得する必要がある状況で使われます。

関連項目

OLE DB コンシューマー テンプレートに関するページ