静的アクセサーを使用するには、あなたの消費者は、ユーザー レコードが必要です。ユーザー レコードのハンドルの入力または出力にデータ要素を含む C++ クラスです。ATL オブジェクト ウィザードは、ユーザー レコードを消費者のためを生成します。コマンドの処理などの省略可能なタスクのユーザー レコードにメソッドを追加することができます。
コマンドを処理するサンプル レコードを次に示します。ユーザー レコードには、 BEGIN_OLUMN_MAP消費者に渡される、プロバイダーからデータの行セットを表します。BEGIN_PARAM_MAPコマンドのパラメーターのセットを表します。この例では、 CCommandクラスを使用してコマンド パラメーターを処理します。マップ エントリ内のデータ メンバーは、クラスの各インスタンスのメモリの 1 つの連続したブロックにオフセットを表します。プロバイダー側のPROVIDER_COLUMN_ENTRYマクロに対応する COLUMN_ENTRYマクロ。
COLUMN_MAPとPARAM_MAPマクロの詳細については、 OLE DB コンシューマー テンプレート用マクロを参照してください。
クラス CArtists{パブリック。//データ要素CHAR m_szFirstName [20];M_szLastName [30]; 文字します。短い m_nAge;//出力バインディング マップBEGIN_COLUMN_MAP(CArtists)COLUMN_ENTRY (1, m_szFirstName)COLUMN_ENTRY (2 日 m_szLastName)COLUMN_ENTRY (3、m_nAge)END_COLUMN_MAP()//マップのパラメーターのバインドBEGIN_PARAM_MAP(CArtists)COLUMN_ENTRY (1, m_nAge)END_PARAM_MAP}
次の例では、ユーザー レコードが行セットに対して複数のアクセサーをサポートする変更します。BEGIN_COLUMN_MAPとEND_COLUMN_MAPのではなく、それBEGIN_ACCESSOR_MAP 、 BEGIN_ACCESSOR各アクセサーを使用します。BEGIN_ACCESSORマクロには、アクセサー番号 (0 からのオフセット) と、アクセサーが自動アクセサーのかどうかを指定します。Autoaccessors データMoveNextの呼び出しを自動的に取得するには、 GetDataを呼び出します。非自動アクセサーでは、データを明示的に取得する必要があります。取得するすべてのレコードを必要はありません、大規模なデータ フィールド (のようなビットマップ イメージ) をバインドする場合、非自動アクセサーを使用します。
cMultiArtists をクラスします。{パブリック。//データ要素CHAR m_szFirstName [20];M_szLastName [30]; 文字します。短い m_nAge;//出力バインディング マップBEGIN_ACCESSOR_MAP (CMultiArtists、2)BEGIN_ACCESSOR (0, true)COLUMN_ENTRY (1, m_szFirstName)COLUMN_ENTRY (2 日 m_szLastName)END_ACCESSOR()BEGIN_ACCESSOR (1、false)/しないか自動アクセサーCOLUMN_ENTRY (3、m_nAge)END_ACCESSOR()END_ACCESSOR_MAP()}