Share via


db_column

指定した列を行セット内の変数にバインドします。

構文

[ db_column(ordinal, dbtype, precision, scale, status, length) ]

パラメーター

ordinal (序数)
データをバインドする行セット内のフィールドに対応する、序数列番号 (DBCOLUMNINFO 序数) または列名 (ANSI または Unicode 文字列)。 数値を使用する場合は、連続する序数 (1、2、3、5 など) をスキップできます。 使用する OLE DB プロバイダーがサポートしている場合は、名前にスペースを含めることができます。 たとえば、次のいずれかの形式を使用できます。

[db_column("2")] TCHAR szCity[30];
[db_column(L"city_name")] TCHAR szCity[30];

dbtype
(省略可能) 列エントリの OLE DB 型インジケーター

有効桁数 (precision)
(省略可能) 列エントリに使用する有効桁数。 詳細については、DBBINDING 構造体bPrecision 要素の説明を参照してください

scale
(省略可能) 列エントリに使用するスケール。 詳細については、DBBINDING 構造体bScale 要素の説明を参照してください

status
(省略可能) この列の状態を保持するために使用されるメンバー変数。 状態は、列の値がデータ値か NULL などの他の値かを示します。 使用できる値については、OLE DB プログラマー リファレンス状態に関する記事を参照してください。

length
(省略可能) 列のサイズをバイト単位で保持するために使用されるメンバー変数。

解説

db_column は、指定されたテーブル列を行セット内の変数にバインドします。 OLE DB IAccessor ベースのバインドに参加できるメンバー データを区切ります。 この属性は、OLE DB コンシューマー マクロ BEGIN_COLUMN_MAPEND_COLUMN_MAPCOLUMN_ENTRY を使用して通常定義される列マップを設定します。 これらは、OLE DB DBBINDING 構造体 を操作して、指定された列をバインドします。 db_column 属性でマークした各メンバーは、列エントリの形式で列マップ内の 1 つのエントリを占有します。 したがって、この属性を呼び出して、列マップ (つまり、コマンドまたはテーブル クラス) を設定します。

db_column を、db_table 属性または db_command 属性のいずれかと組み合わせて使用します。

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

アプリケーションで使用されるこの属性の例については、「MultiRead」を参照してください。

このサンプルでは、テーブル内の列をデータ メンバー long にバインドし、状態フィールドと長さフィールドを指定します。

// db_column_1.cpp
// compile with: /LD
#include <atlbase.h>
#include <atlplus.h>
#include <atldbcli.h>

[ db_command(L"Select * from Products") ]
class CProducts {
   DBSTATUS m_dwProductIDStatus;
   DBLENGTH m_dwProductIDLength;

   [ db_column("1", status="m_dwProductIDStatus", length="m_dwProductIDLength") ] LONG m_ProductID;
};

このサンプルでは、4 つの列を long、文字列、タイムスタンプ、DB_NUMERIC 整数に、この順序でバインドします。

// db_column_2.cpp
// compile with: /LD
#include <atlbase.h>
#include <atlplus.h>
#include <atldbcli.h>

[ db_command(L"Select * from Products") ]
class CProducts {
   [db_column("1")] LONG m_OrderID;
   [db_column("2")] TCHAR m_CustomerID[6];
   [db_column("4")] DB_NUMERIC m_OrderDate;
   [db_column("7", dbtype="DBTYPE_NUMERIC")] DB_NUMERIC m_ShipVia;
};

必要条件

属性コンテキスト Value
適用対象 classstruct、メンバー、メソッド
反復可能 いいえ
必要な属性 なし
無効な属性 なし

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

関連項目

OLE DB コンシューマー属性
クラス属性