アクセサと行セット

更新 : 2007 年 11 月

データを設定および取得するために、OLE DB テンプレートは CAccessorRowset クラスを通じてアクセサと行セットを使用します。このクラスは、異なる種類の複数のアクセスを扱うことができます。

アクセサの種類

すべてのアクセサは、CAccessorBase から派生します。CAccessorBase は、パラメータと列バインディングの両方を提供します。

アクセサの種類を次の図に示します。

アクセサ クラス
アクセサ タイプ

  • CAccessor   このアクセサは、デザイン時にデータベース ソースの構造を理解している場合に使用します。CAccessor は、バッファを含むデータベース レコードをデータ ソースに静的にバインドします。

  • CDynamicAccessor   このアクセサは、デザイン時にデータベースの構造を理解していない場合に使用します。CDynamicAccessor は、IColumnsInfo::GetColumnInfo を呼び出し、データベースの列情報を取得します。このクラスは、アクセサとバッファを作成し、管理します。

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

  • CDynamicStringAccessorCDynamicStringAccessorA、および CDynamicStringAccessorW   これらのアクセサは、データベース スキーマに関する知識を持っていない場合に使用します。CDynamicStringAccessorA は、データを ANSI 文字列として取得し、CDynamicStringAccessorW は、データを Unicode 文字列として取得します。

  • CManualAccessor   このクラスでは、プロバイダが変換できるデータ型の場合、どのデータ型でも使用できます。結果列とコマンド パラメータの両方を処理します。

次の表に、OLE DB テンプレート アクセサの各種類のサポートをまとめます。

アクセサの種類

動的アクセサ

パラメータの処理

バッファ

複数のアクセサ

CAccessor

×

ユーザー

CDynamicAccessor

×

OLE DB テンプレート

×

CDynamicParameterAccessor

OLE DB テンプレート

×

CDynamicStringAccessor[A,W]

×

OLE DB テンプレート

×

CManualAccessor

ユーザー

行セットの種類

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

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

行セット クラス
RowsetType グラフィック

スキーマ行セットは、データ ストアのデータにアクセスせずに、メタデータと呼ばれる、データ ストアに関する情報にアクセスします。スキーマ行セットは、通常、データベースの構造がコンパイル時に不明な場合に使用します。スキーマ行セットは実行時に取得する必要があります。

参照

概念

OLE DB コンシューマ テンプレート (C++)