アクセサーと行セット
データを設定および取得するために、OLE DB テンプレートは CAccessorRowset クラスを通じてアクセサーと行セットを使用します。このクラスは、異なる種類の複数のアクセスを扱うことができます。
アクセサーの種類
すべてのアクセサーは、CAccessorBase から派生します。CAccessorBase には、パラメーターと列バインディングの両方が用意されています。
アクセサーの種類を次の図に示します。
アクセサー クラス
CAccessor このアクセサーは、デザイン時にデータベース ソースの構造を理解している場合に使用します。CAccessor は、バッファーを含むデータベース レコードをデータ ソースに静的にバインドします。
CDynamicAccessor このアクセサーは、デザイン時にデータベースの構造を理解していない場合に使用します。CDynamicAccessor は、IColumnsInfo::GetColumnInfo を呼び出し、データベースの列情報を取得します。このクラスは、アクセサーとバッファーを作成し、管理します。
CDynamicParameterAccessor このアクセサーは、不明なコマンドの種類を扱う場合に使用します。コマンドを準備すると、プロバイダーが ICommandWithParameters をサポートしている場合に、CDynamicParameterAccessor は ICommandWithParameters インターフェイスからパラメーター情報を取得できます。
CDynamicStringAccessor、CDynamicStringAccessorA、および CDynamicStringAccessorW これらのアクセサーは、データベース スキーマに関する情報が不明な場合に使用します。CDynamicStringAccessorA はデータを ANSI 文字列として取得し、CDynamicStringAccessorW はデータを Unicode 文字列として取得します。
CManualAccessor このクラスでは、プロバイダーが変換できるデータ型の場合、どのデータ型でも使用できます。結果列とコマンド パラメーターの両方を処理します。
次の表に、OLE DB テンプレート アクセサーの各種類のサポートをまとめます。
アクセサーの種類 |
動的 |
パラメーターの処理 |
バッファー |
複数のアクセサー |
---|---|---|---|---|
CAccessor |
X |
○ |
User |
○ |
CDynamicAccessor |
○ |
X |
OLE DB テンプレート |
X |
CDynamicParameterAccessor |
○ |
○ |
OLE DB テンプレート |
X |
CDynamicStringAccessor[A,W] |
○ |
X |
OLE DB テンプレート |
X |
CManualAccessor |
○ |
○ |
User |
○ |
行セットの種類
OLE DB テンプレートは、3 種類の行セットをサポートします (前の図を参照)。CRowset で実装される単一行セット、CBulkRowset で実装されるバルク行セット、および CArrayRowset で実装される配列行セットです。単一行セットは、MoveNext が呼び出されたときに単一の行ハンドルをフェッチします。バルク行セットは、複数の行ハンドルをフェッチできます。配列行セットは、配列構文を使用してアクセスできる行セットです。
行セットの種類を次の図に示します。
行セット クラス
スキーマ行セットは、データ ストアのデータにアクセスせずに、メタデータと呼ばれる、データ ストアに関する情報にアクセスします。スキーマ行セットは、通常、データベースの構造がコンパイル時に不明な場合に使用します。スキーマ行セットは実行時に取得する必要があります。