使用するアクセサーの種類の決定
行セットのデータ型はコンパイル時または実行時に決定することができます。
コンパイル時にデータ型を決定する必要がある場合は、静的アクセサー (CAccessor など) を使用します。
実行時にデータ型を決定する必要がある場合は、動的 (CDynamicAccessor またはその子) または手動のアクセサー (CManualAccessor) を使用します。 このようなケースでは、行セットに対して GetColumnInfo を呼び出して、返された列のバインド情報から型を判断することができます。
コンシューマー テンプレートで提供されるアクセサーの種類を次の表に示します。 どのアクセサーにもメリットとデメリットがあります。 ご自身の状況に応じて、ニーズに合うアクセサーの種類があるはずです。
| アクセサー クラス | バインド | パラメーター | 解説 |
|---|---|---|---|
CAccessor |
COLUMN_ENTRY マクロを使用してユーザー レコードを作成します。 このマクロは、そのレコード内のデータ メンバーをアクセサーにバインドします。 行セットが作成されると、列のバインドを解除することはできません。 | 必要 (PARAM_MAP マクロ エントリを使用)。 一度バインドされると、パラメーターのバインドを解除することはできません。 | コードが少ないため、最も高速なアクセサーです。 |
CDynamicAccessor |
自動。 | いいえ。 | 行セット内のデータ型がわからない場合に役立ちます。 |
CDynamicParameterAccessor |
自動 (オーバーライド可)。 | 必要 (プロバイダーが ICommandWithParameters をサポートしている場合)。 パラメーターは自動的にバインドされます。 |
CDynamicAccessor よりも低速ですが、汎用ストアド プロシージャの呼び出しに便利です。 |
CDynamicStringAccessor[A,W] |
自動。 | いいえ。 | 文字列データとしてデータ ストアからアクセスされるデータを取得します。 |
CManualAccessor |
手動 (AddBindEntry を使用)。 |
手動 (AddParameterEntry を使用)。 |
高速。パラメーターと列は 1 回だけバインドされます。 使用するデータ型はユーザーが決定します (例については DBVIEWER サンプルを参照してください)。より多くのコードCDynamicAccessorが必要です。CAccessor OLE DB の直接呼び出しに似ています。 |
CXMLAccessor |
自動。 | いいえ。 | 文字列データとしてデータ ストアからアクセスされるデータを取得し、それを XML タグ付けデータとして書式設定します。 |