次の方法で共有


アクセサーと行セット

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

アクセサーの種類

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

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

アクセサー クラス

アクセサー タイプ

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

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

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

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

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

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

アクセサーの種類

動的

パラメーターの処理

バッファー

複数のアクセサー

CAccessor

×

User

CDynamicAccessor

×

OLE DB テンプレート

×

CDynamicParameterAccessor

OLE DB テンプレート

×

CDynamicStringAccessor[A,W]

×

OLE DB テンプレート

×

CManualAccessor

User

行セットの種類

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

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

行セット クラス

RowsetType グラフィック

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

参照

概念

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