次の方法で共有


db_accessor

IAccessor ベースのバインドに参加する db_column 属性をグループ化します。

構文

[ db_accessor(num, auto) ]

パラメーター

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

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

解説

db_accessor は、同じクラスまたは関数内の後続の db_columndb_param の属性の基になる OLE DB アクセサーを定義します。 db_accessor はメンバー レベルで使用でき、OLE DB の IAccessor ベースのバインドに参加する db_column 属性をグループ化するために使用されます。 これは、db_table または db_command 属性と組み合わせて使用されます。 この属性を呼び出すことは、マクロの BEGIN_ACCESSOREND_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;
};

要件

属性コンテキスト
適用対象 属性ブロック
反復可能 いいえ
必要な属性 なし
無効な属性 なし

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

関連項目

OLE DB コンシューマー属性