db_accessor
IAccessor
ベースのバインドに参加する db_column
属性をグループ化します。
構文
[ db_accessor(num, auto) ]
パラメーター
num
アクセサー番号 (0 から始まる整数のインデックス) を指定します。 アクセサー番号は、整数または定義済みの値を使用して、昇順で指定する必要があります。
auto
アクセサーが自動的に取得されるか (TRUE)、取得されないか (FALSE) を指定するブール値。
解説
db_accessor は、同じクラスまたは関数内の後続の db_column
と db_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 はユーザーがクラスに指定した名前です。コンパイラは、_YourClassNameAccessor から派生する 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;
};
要件
属性コンテキスト | 値 |
---|---|
適用対象 | 属性ブロック |
反復可能 | いいえ |
必要な属性 | なし |
無効な属性 | なし |
属性コンテキストの詳細については、「 属性コンテキスト」を参照してください。