アクセサと行セット
更新 : 2007 年 11 月
データを設定および取得するために、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 |
× |
○ |
ユーザー |
○ |
CDynamicAccessor |
○ |
× |
OLE DB テンプレート |
× |
CDynamicParameterAccessor |
○ |
○ |
OLE DB テンプレート |
× |
CDynamicStringAccessor[A,W] |
○ |
× |
OLE DB テンプレート |
× |
CManualAccessor |
○ |
○ |
ユーザー |
○ |
行セットの種類
OLE DB テンプレートは、3 種類の行セットをサポートします (前の図を参照)。CRowset で実装される単一行セット、CBulkRowset で実装されるバルク行セット、および CArrayRowset で実装される配列行セットです。単一行セットは、MoveNext が呼び出されたときに単一の行ハンドルをフェッチします。バルク行セットは、複数の行ハンドルをフェッチできます。配列行セットは、配列構文を使用してアクセスできる行セットです。
行セットの種類を次の図に示します。
行セット クラス
スキーマ行セットは、データ ストアのデータにアクセスせずに、メタデータと呼ばれる、データ ストアに関する情報にアクセスします。スキーマ行セットは、通常、データベースの構造がコンパイル時に不明な場合に使用します。スキーマ行セットは実行時に取得する必要があります。