使用するアクセサの種類の決定
更新 : 2007 年 11 月
行セットのデータ型は、コンパイル時または実行時に決定できます。
コンパイル時にデータ型を決定する必要がある場合は、静的アクセサ (CAccessor など) を使用します。データ型は、手動で決定することも、ATL OLE DB コンシューマ ウィザードを使用して決定することもできます。
実行時にデータ型を決定する必要がある場合は、動的アクセサ (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 タグ付きデータとして書式設定します。 |