アクセサーと行セット
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 テンプレートのアクセサーの型でサポートされている内容を次の表に示します。
アクセサーの型 | 動的 | パラメーターを処理する | Buffer | 複数のアクセサー |
---|---|---|---|---|
CAccessor |
いいえ | はい | User | はい |
CDynamicAccessor |
はい | いいえ | OLE DB テンプレート | いいえ |
CDynamicParameterAccessor |
イエス | はい | OLE DB テンプレート | いいえ |
CDynamicStringAccessor[A,W] |
有効 | いいえ | OLE DB テンプレート | いいえ |
CManualAccessor |
イエス | はい | User | はい |
行セットの種類
OLE DB テンプレートは、3 種類の行セット (前の図を参照してください) をサポートしています。単一行セット (CRowset で実装)、バルク行セット (CBulkRowset で実装)、配列行セット (CArrayRowset で実装) です。 単一行セットの場合、MoveNext
が呼び出されたときに、単一行ハンドルをフェッチします。 バルク行セットの場合、複数の行ハンドルをフェッチできます。 配列行セットは、配列構文を使ってアクセスできる行セットです。
行セットの種類を次の図に示します。
行セットのクラス
スキーマ行セットからは、データ ストア内のデータにアクセスするのではなく、データ ストアに関する情報 (メタデータと呼ばれます) にアクセスします。 通常、スキーマ行セットはコンパイル時にデータベースの構造がわからず、実行時に取得する必要がある状況で使われます。