次の方法で共有


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_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 サンプル