次の方法で共有


db_accessor

IAccessor ベースの連結に関係する db_column 属性をグループ化します。

[ db_accessor( 
   num, 
   auto 
) ]

パラメーター

  • num
    アクセサー番号 (0 から始まる整数のインデックス)。 アクセサー番号は、整数または定義済みの値を使用して昇順で指定する必要があります。

  • 自動
    アクセサーを自動的に取得する (TRUE) か、取得しない (FALSE) かを指定するブール値。

解説

db_accessor は、同じクラスまたは関数内にある後続の属性 db_columndb_param の基になる OLE DB アクセサーを定義します。 db_accessor は、メンバー レベルで使用でき、OLE DB の IAccessor ベースの連結に関連する属性 db_column をグループ化します。 属性 db_table または db_command のいずれかと組み合わせて使用します。 この属性の呼び出しは、BEGIN_ACCESSOR マクロと END_ACCESSOR マクロの呼び出しと同じです。

db_accessor は行セットを生成して対応するアクセサー マップに連結します。 db_accessor を呼び出さない場合は、アクセサー 0 が自動的に生成され、すべての列連結がそのアクセサー ブロックに割り当てられます。

db_accessor は、データベースの列連結を 1 つ以上のアクセサーにグループ化します。 複数のアクセサーを使用する必要がある状況については、「行セットでの複数アクセサーの使用」を参照してください。 また、「ユーザー レコード」の「ユーザー レコードによる複数のアクセサーのサポート」も参照してください。

コンシューマー属性プロバイダーがこの属性をクラスに適用すると、コンパイラはクラスの名前を _YourClassNameAccessor (YourClassName はクラスの名前) に変更します。さらに、コンパイラは、_YourClassName から派生した YourClassName という名前のクラスを生成します。 クラス ビューに両方のクラスが表示されます。

使用例

db_accessor を使用して、Northwind データベースの Orders テーブルの列を 2 つのアクセサーにグループ化する例を次に示します。 アクセサー 0 は自動アクセサーで、アクセサー 1 は手動アクセサーです。

// cpp_attr_ref_db_accessor.cpp
// compile with: /LD /link /OPT:NOREF
#define _ATL_ATTRIBUTES
#include <atlbase.h>
#include <atldbcli.h>

[ db_command(L"SELECT LastName, FirstName FROM Orders") ]
class CEmployees {
public:
   [ db_accessor(0, TRUE) ];
   [ db_column("1") ] LONG m_OrderID;
   [ db_column("2") ] TCHAR m_CustomerID[6];
   [ db_column("4") ] DBTIMESTAMP m_OrderDate; 

   [ db_accessor(1, FALSE) ];
   [ db_column("8") ] CURRENCY m_Freight;
};

必要条件

属性コンテキスト

対象

属性ブロック

複数回の適用

不要

必要な属性

[なし]

無効な属性

[なし]

属性コンテキストの詳細については、「属性コンテキスト」を参照してください。

参照

その他の技術情報

OLE DB コンシューマー属性

ATL サンプル