次の方法で共有


OLE DB コンシューマー テンプレート用マクロおよびグローバル関数

OLE DB コンシューマー テンプレートには、次のマクロとグローバル関数が含まれています。

グローバル関数

名前 説明
AtlTraceErrorRecords エラーが返された場合、OLE DB エラー レコード情報をダンプ デバイスにダンプします。

アクセサー マップ マクロ

名前 説明
BEGIN_ACCESSOR アクセサー エントリの開始位置を示します。
BEGIN_ACCESSOR_MAP アクセサー マップ エントリの開始位置を示します。
END_ACCESSOR アクセサー エントリの終了位置を示します。
END_ACCESSOR_MAP アクセサー マップ エントリの終了位置を示します。

列マップ マクロ

名前 説明
BEGIN_COLUMN_MAP ユーザー レコード クラスの列マップ エントリの開始位置を示します。
BLOB_ENTRY バイナリ ラージ オブジェクト (BLOB) をバインドするために使われます。
BLOB_ENTRY_LENGTH BLOB データ列の長さを報告します。
BLOB_ENTRY_LENGTH_STATUS BLOB データ列の長さと状態を報告します。
BLOB_ENTRY_STATUS BLOB データ列の状態を報告します。
BLOB_NAME バイナリ ラージ オブジェクトを列名を指定して結合するために使われます。
BLOB_NAME_LENGTH BLOB データ列の長さを報告します。
BLOB_NAME_LENGTH_STATUS BLOB データ列の長さと状態を報告します。
BLOB_NAME_STATUS BLOB データ列の状態を報告します。
BOOKMARK_ENTRY 行セットのブックマーク エントリを表します。 ブックマーク エントリは特別な種類の列エントリです。
COLUMN_ENTRY データベース内の特定の列へのバインドを表します。
COLUMN_ENTRY_EX データベース内の特定の列へのバインドを表します。 typelengthprecisionscalestatus のパラメーターをサポートします。
COLUMN_ENTRY_LENGTH データベース内の特定の列へのバインドを表します。 length 変数をサポートします。
COLUMN_ENTRY_LENGTH_STATUS データベース内の特定の列へのバインドを表します。 statuslength のパラメーターをサポートします。
COLUMN_ENTRY_PS データベース内の特定の列へのバインドを表します。 precisionscale のパラメーターをサポートします。
COLUMN_ENTRY_PS_LENGTH データベース内の特定の列へのバインドを表します。 length 変数、precisionscale のパラメーターをサポートします。
COLUMN_ENTRY_PS_LENGTH_STATUS データベース内の特定の列へのバインドを表します。 statuslength の変数、precisionscale のパラメーターをサポートします。
COLUMN_ENTRY_PS_STATUS データベース内の特定の列へのバインドを表します。 status 変数、precisionscale のパラメーターをサポートします。
COLUMN_ENTRY_STATUS データベース内の特定の列へのバインドを表します。 status 変数をサポートします。
COLUMN_ENTRY_TYPE データベース内の特定の列へのバインドを表します。 type パラメーターをサポートします。
COLUMN_ENTRY_TYPE_SIZE データベース内の特定の列へのバインドを表します。 typesize のパラメーターをサポートします。
COLUMN_NAME 名前を使ってデータベース内の特定の列へのバインドを表します。
COLUMN_NAME_EX 名前を使ってデータベース内の特定の列へのバインドを表します。 データ型、サイズ、有効桁数、小数点以下桁数、列の長さ、列の状態の指定をサポートします。
COLUMN_NAME_LENGTH 名前を使ってデータベース内の特定の列へのバインドを表します。 列の長さの指定をサポートします。
COLUMN_NAME_LENGTH_STATUS 名前を使ってデータベース内の特定の列へのバインドを表します。 列の長さと状態の指定をサポートします。
COLUMN_NAME_PS 名前を使ってデータベース内の特定の列へのバインドを表します。 有効桁数と小数点以下桁数の指定をサポートします。
COLUMN_NAME_PS_LENGTH 名前を使ってデータベース内の特定の列へのバインドを表します。 有効桁数、小数点以下桁数、列の長さの指定をサポートします。
COLUMN_NAME_PS_LENGTH_STATUS 名前を使ってデータベース内の特定の列へのバインドを表します。 有効桁数、小数点以下桁数、列の長さ、列の状態の指定をサポートします。
COLUMN_NAME_PS_STATUS 名前を使ってデータベース内の特定の列へのバインドを表します。 有効桁数、小数点以下桁数、列の状態の指定をサポートします。
COLUMN_NAME_STATUS 名前を使ってデータベース内の特定の列へのバインドを表します。 列の状態の指定をサポートします。
COLUMN_NAME_TYPE 名前を使ってデータベース内の特定の列へのバインドを表します。 データ型の指定をサポートします。
COLUMN_NAME_TYPE_PS 名前を使ってデータベース内の特定の列へのバインドを表します。 デバッガー、有効桁数、小数点以下桁数の指定をサポートします。
COLUMN_NAME_TYPE_SIZE 名前を使ってデータベース内の特定の列へのバインドを表します。 データ型とサイズの指定をサポートします。
COLUMN_NAME_TYPE_STATUS 名前を使ってデータベース内の特定の列へのバインドを表します。 データ型と列の状態の指定をサポートします。
END_COLUMN_MAP 列マップ エントリの終了位置を示します。

コマンド マクロ

名前 説明
DEFINE_COMMAND CCommand クラスを使う場合に、行セットの作成に使うコマンドを指定します。 指定したアプリケーションの種類に一致する文字列型 (ANSI または Unicode) のみを受け入れます。 DEFINE_COMMAND ではなく DEFINE_COMMAND_EX を使うことをお勧めします。
DEFINE_COMMAND_EX CCommand クラスを使う場合に、行セットの作成に使うコマンドを指定します。 ANSI および Unicode アプリケーションをサポートします。

パラメーター マップ マクロ

名前 説明
BEGIN_PARAM_MAP ユーザー レコード クラスのパラメーター マップ エントリの開始位置を示します。
END_PARAM_MAP パラメーター マップ エントリの終了位置を示します。
SET_PARAM_TYPE 入力、出力、または入出力として、SET_PARAM_TYPE マクロの次に COLUMN_ENTRY マクロを指定します。

AtlTraceErrorRecords

エラーが返された場合、OLE DB エラー レコード情報をダンプ デバイスにダンプします。

構文

inline void AtlTraceErrorRecords(HRESULT hrErr = S_OK);

パラメーター

hErr
[入力] OLE DB コンシューマー テンプレートのメンバー関数から返される HRESULT。

解説

hErr が S_OK ではない場合、AtlTraceErrorRecords は OLE DB エラー レコード情報をダンプ デバイス ([出力] ウィンドウの [デバッグ] タブまたはファイル) にダンプします。 プロバイダーから取得されたエラー レコード情報には、各エラー レコード エントリに関する行番号、ソース、説明、ヘルプ ファイル、コンテキスト、GUID が含まれています。 AtlTraceErrorRecords は、デバッグ ビルドの場合にのみ、この情報をダンプします。 リリース ビルドの場合、最適化された空のスタブになります。詳細については、「CDBErrorInfo クラス」を参照してください。

BEGIN_ACCESSOR

アクセサー エントリの開始位置を示します。

構文

BEGIN_ACCESSOR(num, bAuto)

パラメーター

num
[入力] このアクセサー マップ内のアクセサーのゼロオフセット番号。

bAuto
[入力] このアクセサーが自動アクセサーか手動アクセサーかを指定します。 true の場合、アクセサーは自動であり、false の場合、アクセサーは手動です。 自動アクセサーとは、移動操作時にデータがフェッチされることを意味します。

解説

1 つの行セットで複数のアクセサーを使う場合は、BEGIN_ACCESSOR_MAP を指定し、個々のアクセサーに対して BEGIN_ACCESSOR マクロを使う必要があります。 BEGIN_ACCESSOR マクロは、END_ACCESSOR マクロを使って完了します。 BEGIN_ACCESSOR_MAP マクロは、END_ACCESSOR_MAP マクロを使って完了します。

BEGIN_ACCESSOR_MAP」を参照してください。

BEGIN_ACCESSOR_MAP

アクセサー マップ エントリの開始位置を示します。

構文

BEGIN_ACCESSOR_MAP(x, num)

パラメーター

x
[入力] ユーザー レコード クラスの名前。

num
[入力] このアクセサー マップのアクセサーの数。

解説

1 つの行セットで複数のアクセサーを使う場合は、先頭に BEGIN_ACCESSOR_MAP を指定し、個々のアクセサーに対して BEGIN_ACCESSOR マクロを使う必要があります。 BEGIN_ACCESSOR マクロは、END_ACCESSOR マクロを使って完了します。 アクセサー マップは、END_ACCESSOR_MAP マクロを使って完了します。

ユーザー レコードに含まれるアクセサーが 1 つのみの場合は、 BEGIN_COLUMN_MAPマクロを使用します。

class CArtistsAccessor
{
public:
// Data Elements
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];
   short m_nAge;

// Output binding map
BEGIN_ACCESSOR_MAP(CArtistsAccessor, 2)
   BEGIN_ACCESSOR(0, true)
      COLUMN_ENTRY(1, m_szFirstName)
      COLUMN_ENTRY(2, m_szLastName)
   END_ACCESSOR()
   BEGIN_ACCESSOR(1, false) // Not an auto accessor
      COLUMN_ENTRY(3, m_nAge)
   END_ACCESSOR()
END_ACCESSOR_MAP()

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsAccessor, L" \
   SELECT \
      FirstName, \
      LastName, \
      Age \
      FROM Artists")
};

END_ACCESSOR

アクセサー エントリの終了位置を示します。

構文

END_ACCESSOR()

解説

1 つの行セットで複数のアクセサーを使う場合は、BEGIN_ACCESSOR_MAP を指定し、個々のアクセサーに対して BEGIN_ACCESSOR マクロを使う必要があります。 BEGIN_ACCESSOR マクロは、END_ACCESSOR マクロを使って完了します。 BEGIN_ACCESSOR_MAP マクロは、END_ACCESSOR_MAP マクロを使って完了します。

BEGIN_ACCESSOR_MAP」を参照してください。

END_ACCESSOR_MAP

アクセサー マップ エントリの終了位置を示します。

構文

END_ACCESSOR_MAP()

解説

1 つの行セットで複数のアクセサーを使う場合は、BEGIN_ACCESSOR_MAP を指定し、個々のアクセサーに対して BEGIN_ACCESSOR マクロを使う必要があります。 BEGIN_ACCESSOR マクロは、END_ACCESSOR マクロを使って完了します。 BEGIN_ACCESSOR_MAP マクロは、END_ACCESSOR_MAP マクロを使って完了します。

BEGIN_ACCESSOR_MAP」を参照してください。

BEGIN_COLUMN_MAP

列マップ エントリの先頭を示します。

構文

BEGIN_COLUMN_MAP(x)

パラメーター

x
[入力] CAccessorから派生したユーザー レコード クラスの名前。

解説

このマクロは、行セットに対してアクセサーが 1 つしか必要ない場合に使用します。 1 つの行セットに対して複数のアクセサーが必要な場合は、 BEGIN_ACCESSOR_MAPを使用します。

BEGIN_COLUMN_MAP マクロは END_COLUMN_MAP マクロを使って完了します。 このマクロは、ユーザー レコードで 1 つのアクセサーだけが必要な場合に使用します。

列は、バインドする行セットのフィールドに相当します。

列およびパラメーター マップのコード例を次に示します。

BLOB_ENTRY

BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。

構文

BLOB_ENTRY(nOrdinal, IID, flags, data)

パラメーター

nOrdinal
[入力] 列番号。

IID
[入力] BLOB を取得するために使う IDD_ISequentialStream などのインターフェイス GUID。

flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ)。

data
[入力] ユーザー レコードの対応するデータ メンバー。

BLOB の取得方法に関するページを参照してください。

BLOB_ENTRY_LENGTH

BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_ENTRY と似ていますが、このマクロは BLOB 列の長さ (バイト単位) も取得する点が異なります。

構文

BLOB_ENTRY_LENGTH(nOrdinal, IID, flags, data, length)

パラメーター

nOrdinal
[入力] 列番号。

IID
[入力] BLOB を取得するために使う IDD_ISequentialStream などのインターフェイス GUID。

flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ)。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[出力] BLOB 列の (実際の) 長さをバイト単位で取得します。

BLOB の取得方法に関するページを参照してください。

BLOB_ENTRY_LENGTH_STATUS

BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_ENTRY と似ていますが、このマクロは BLOB 列の長さと状態も取得する点が異なります。

構文

BLOB_ENTRY_LENGTH_STATUS(
    nOrdinal,
    IID,
    flags,
    data,
    length,
    status )

パラメーター

nOrdinal
[入力] 列番号。

IID
[入力] BLOB を取得するために使う IDD_ISequentialStream などのインターフェイス GUID。

flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ)。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[出力] BLOB 列の (実際の) 長さをバイト単位で取得します。

status
[出力] BLOB データ列の状態。

BLOB の取得方法に関するページを参照してください。

BLOB_ENTRY_STATUS

BEGIN_COLUMN_MAP または BEGIN_ACCESSOR_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_ENTRY と似ていますが、このマクロは BLOB 列の状態も取得する点が異なります。

構文

BLOB_ENTRY_STATUS(nOrdinal, IID, flags, data, status)

パラメーター

nOrdinal
[入力] 列番号。

IID
[入力] BLOB を取得するために使う IDD_ISequentialStream などのインターフェイス GUID。

flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ)。

data
[入力] ユーザー レコードの対応するデータ メンバー。

status
[出力] BLOB フィールドの状態。

BLOB の取得方法に関するページを参照してください。

BLOB_NAME

BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_ENTRY と似ていますが、このマクロは列番号ではなく列名を受け取る点が異なります。

構文

BLOB_NAME(pszName, IID, flags, data )

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

IID
[入力] BLOB を取得するために使う IDD_ISequentialStream などのインターフェイス GUID。

flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ)。

data
[入力] ユーザー レコードの対応するデータ メンバー。

BLOB の取得方法に関するページを参照してください。

BLOB_NAME_LENGTH

BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_NAME と似ていますが、このマクロは BLOB データ列の長さ (バイト単位) も取得する点が異なります。

構文

BLOB_NAME_LENGTH(pszName, IID, flags, data, length )

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

IID
[入力] BLOB を取得するために使う IDD_ISequentialStream などのインターフェイス GUID。

flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ)。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[出力] BLOB 列の (実際の) 長さをバイト単位で取得します。

BLOB_NAME_LENGTH_STATUS

BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_NAME と似ていますが、このマクロは BLOB データ列の長さと状態も取得する点が異なります。

構文

BLOB_NAME_LENGTH_STATUS(pszName, IID, flags, data, length, status )

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

IID
[入力] BLOB を取得するために使う IDD_ISequentialStream などのインターフェイス GUID。

flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ)。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[出力] BLOB 列の (実際の) 長さをバイト単位で取得します。

status
[出力] BLOB フィールドの状態。

BLOB_NAME_STATUS

BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_NAME と似ていますが、このマクロは BLOB データ列の状態も取得する点が異なります。

構文

BLOB_NAME_STATUS(pszName, IID, flags, data, status )

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

IID
[入力] BLOB を取得するために使う IDD_ISequentialStream などのインターフェイス GUID。

flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ)。

data
[入力] ユーザー レコードの対応するデータ メンバー。

status
[出力] BLOB フィールドの状態。

BOOKMARK_ENTRY

ブックマーク列をバインドします。

構文

BOOKMARK_ENTRY(variable)

パラメーター

variable
[入力] ブックマーク列にバインドされる変数。

class CArtistsBookmark
{
public:
// Data Elements
   CBookmark<4> m_bookmark;
   short m_nAge;
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];

// Output binding map
BEGIN_COLUMN_MAP(CArtistsBookmark)
   BOOKMARK_ENTRY(m_bookmark)
   COLUMN_ENTRY(1, m_nAge)
   COLUMN_ENTRY(2, m_szFirstName)
   COLUMN_ENTRY(3, m_szLastName)
END_COLUMN_MAP()

   void GetRowsetProperties(CDBPropSet* pPropSet)
   {
      pPropSet->AddProperty(DBPROP_BOOKMARKS, true);
   }

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsBookmark, L" \
   SELECT \
      Age, \
      FirstName, \
      LastName \
      FROM Artists")
};

詳細については、「ブックマークを使用する」と「CBookmark クラス」を参照してください。

COLUMN_ENTRY

行セット内の特定の列に対する行セットのバインドを表します。

構文

COLUMN_ENTRY(nOrdinal, data)

パラメーター

「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。

nOrdinal
[入力] 列番号。

data
[入力] ユーザー レコードの対応するデータ メンバー。

解説

COLUMN_ENTRY マクロは次の場所で使われます。

マクロのトピック「BEGIN_COLUMN_MAP」と「BEGIN_ACCESSOR_MAP」の例を参照してください。

COLUMN_ENTRY_EX

データベース内の特定の列に対する行セットのバインドを表します。

構文

COLUMN_ENTRY_EX(nOrdinal, wType, nLength, nPrecision, nScale, data, length, status)

パラメーター

「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。

nOrdinal
[入力] 列番号。

wType
[入力] データ型。

nLength
[入力] バイト単位のデータ サイズ。

nPrecision
[入力] データの取得時に wTypeDBTYPE_NUMERIC である場合に使う最大有効桁数。 それ以外の場合、このパラメーターは無視されます。

nScale
[入力] データの取得時に wTypeDBTYPE_NUMERIC または DBTYPE_DECIMAL である場合に使う小数点以下桁数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[入力] 列の長さにバインドされる変数。

status
[入力] 列の状態にバインドされる変数。

解説

COLUMN_ENTRY_EX マクロは次の場所で使われます。

BOOKMARK_ENTRY」を参照してください。

COLUMN_ENTRY_LENGTH

データベース内の特定の列に対する行セットのバインドを表します。

構文

COLUMN_ENTRY_LENGTH(nOrdinal, data, length)

パラメーター

「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。

nOrdinal
[入力] 1 から始まる列番号。 ブックマークは列 0 に対応します。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[入力] 列の長さにバインドされる変数。

解説

このマクロは length 変数をサポートします。 次の場所で使われます。

COLUMN_ENTRY_LENGTH_STATUS

データベース内の特定の列に対する行セットのバインドを表します。

構文

COLUMN_ENTRY_LENGTH_STATUS(nOrdinal, data, length, status)

パラメーター

「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。

nOrdinal
[入力] 列番号。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[入力] 列の長さにバインドされる変数。

status
[入力] 列の状態にバインドされる変数。

解説

長さと状態の変数をサポートする場合は、このマクロを使います。 次の場所で使われます。

COLUMN_ENTRY_PS

行セット内の特定の列に対する行セットのバインドを表します。

構文

COLUMN_ENTRY_PS(nOrdinal, nPrecision, nScale, data)

パラメーター

「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。

nOrdinal
[入力] 列番号。

nPrecision
[入力] バインドする列の最大有効桁数。

nScale
[入力] バインドする列の小数点以下桁数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

解説

バインドする列の有効桁数と小数点以下桁数を指定できます。 次の場所で使われます。

COLUMN_ENTRY_PS_LENGTH

データベース内の特定の列に対する行セットのバインドを表します。

構文

COLUMN_ENTRY_PS_LENGTH(nOrdinal, nPrecision, nScale, data, length)

パラメーター

「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。

nOrdinal
[入力] 1 から始まる列番号。 ブックマークは列 0 に対応します。

nPrecision
[入力] バインドする列の最大有効桁数。

nScale
[入力] バインドする列の小数点以下桁数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[入力] 列の長さにバインドされる変数。

解説

バインドする列の有効桁数と小数点以下桁数を指定できます。 このマクロは length 変数をサポートします。 次の場所で使われます。

COLUMN_ENTRY_PS_LENGTH_STATUS

データベース内の特定の列に対する行セットのバインドを表します。

構文

COLUMN_ENTRY_PS_LENGTH_STATUS(nOrdinal, nPrecision, nScale, data, length, status)

パラメーター

「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。

nOrdinal
[入力] 列番号。

nPrecision
[入力] バインドする列の最大有効桁数。

nScale
[入力] バインドする列の小数点以下桁数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[入力] 列の長さにバインドされる変数。

status
[入力] 列の状態にバインドされる変数。

解説

バインドする列の有効桁数と小数点以下桁数を指定できます。 長さと状態の変数をサポートする場合は、このマクロを使います。 次の場所で使われます。

COLUMN_ENTRY_PS_STATUS

データベース内の特定の列に対する行セットのバインドを表します。

構文

COLUMN_ENTRY_PS_STATUS(nOrdinal, nPrecision, nScale, data, status)

パラメーター

「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。

nOrdinal
[入力] 列番号。

nPrecision
[入力] バインドする列の最大有効桁数。

nScale
[入力] バインドする列の小数点以下桁数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

status
[入力] 列の状態にバインドされる変数。

解説

バインドする列の有効桁数と小数点以下桁数を指定できます。 このマクロは、status 変数をサポートします。 次の場所で使われます。

COLUMN_ENTRY_STATUS

データベース内の特定の列に対する行セットのバインドを表します。

構文

COLUMN_ENTRY_STATUS(nOrdinal, data, status)

パラメーター

「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。

nOrdinal
[入力] 列番号。

data
[入力] ユーザー レコードの対応するデータ メンバー。

status
[入力] 列の状態にバインドされる変数。

解説

このマクロは、status 変数をサポートします。 次の場所で使われます。

COLUMN_ENTRY_TYPE

データベース内の特定の列へのバインドを表します。 type パラメーターをサポートします。

構文

COLUMN_ENTRY_TYPE (nOrdinal, wType, data)

パラメーター

nOrdinal
[入力] 列番号。

wType
[入力] 列エントリのデータ型。

data
[入力] ユーザー レコードの対応するデータ メンバー。

解説

このマクロは、データ型を指定する手段を提供する COLUMN_ENTRY マクロの特殊なバリアントです。

COLUMN_ENTRY_TYPE_SIZE

データベース内の特定の列へのバインドを表します。 typesize のパラメーターをサポートします。

構文

COLUMN_ENTRY_TYPE_SIZE(nOrdinal, wType, nLength, data)

パラメーター

nOrdinal
[入力] 列番号。

wType
[入力] 列エントリのデータ型。

nLength
[入力] 列エントリのバイト単位のサイズ。

data
[入力] ユーザー レコードの対応するデータ メンバー。

解説

このマクロは、データのサイズと型を指定する手段を提供する COLUMN_ENTRY マクロの特殊なバリアントです。

COLUMN_NAME

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_ENTRY と似ていますが、このマクロは列番号ではなく列名を受け取る点が異なります。

構文

COLUMN_NAME(pszName, data)

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

data
[入力] ユーザー レコードの対応するデータ メンバー。

解説

COLUMN_NAME_* マクロは COLUMN_ENTRY と同じ場所で使われます。

COLUMN_NAME_EX

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロはデータ型、サイズ、有効桁数、小数点以下桁数、列の長さ、列の状態も受け取る点が異なります。

構文

COLUMN_NAME_EX(pszName, wType, nLength, nPrecision, nScale, data, length, status )

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

wType
[入力] データ型。

nLength
[入力] バイト単位のデータ サイズ。

nPrecision
[入力] データの取得時に wTypeDBTYPE_NUMERIC である場合に使う最大有効桁数。 それ以外の場合、このパラメーターは無視されます。

nScale
[入力] データの取得時に wTypeDBTYPE_NUMERIC または DBTYPE_DECIMAL である場合に使う小数点以下桁数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[入力] 列の長さにバインドされる変数。

status
[入力] 列の状態にバインドされる変数。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

COLUMN_NAME_LENGTH

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは列の長さも受け取る点が異なります。

構文

COLUMN_NAME_LENGTH(pszName, data, length)

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[入力] 列の長さにバインドされる変数。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

COLUMN_NAME_LENGTH_STATUS

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは列の長さと列の状態も受け取る点が異なります。

構文

COLUMN_NAME_LENGTH_STATUS(pszName, data, length, status )

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[入力] 列の長さにバインドされる変数。

status
[入力] 列の状態にバインドされる変数。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

COLUMN_NAME_PS

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは有効桁数と小数点以下桁数も受け取る点が異なります。

構文

COLUMN_NAME_PS(pszName, nPrecision, nScale, data )

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

nPrecision
[入力] バインドする列の最大有効桁数。

nScale
[入力] バインドする列の小数点以下桁数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

COLUMN_NAME_PS_LENGTH

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは有効桁数、小数点以下桁数、列の長さも受け取る点が異なります。

構文

COLUMN_NAME_PS_LENGTH(pszName, nPrecision, nScale, data, length )

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

nPrecision
[入力] バインドする列の最大有効桁数。

nScale
[入力] バインドする列の小数点以下桁数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[入力] 列の長さにバインドされる変数。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

COLUMN_NAME_PS_LENGTH_STATUS

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは有効桁数、小数点以下桁数、列の長さ、列の状態も受け取る点が異なります。

構文

COLUMN_NAME_PS_LENGTH_STATUS(pszName, nPrecision, nScale, data, length, status )

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

nPrecision
[入力] バインドする列の最大有効桁数。

nScale
[入力] バインドする列の小数点以下桁数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

length
[入力] 列の長さにバインドされる変数。

status
[入力] 列の状態にバインドされる変数。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

COLUMN_NAME_PS_STATUS

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは有効桁数、小数点以下桁数、列の状態も受け取る点が異なります。

構文

COLUMN_NAME_PS_STATUS(pszName, nPrecision, nScale, data, status )

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

nPrecision
[入力] バインドする列の最大有効桁数。

nScale
[入力] バインドする列の小数点以下桁数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

status
[入力] 列の状態にバインドされる変数。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

COLUMN_NAME_STATUS

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは列の状態も受け取る点が異なります。

構文

COLUMN_NAME_STATUS(pszName, data, status )

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

data
[入力] ユーザー レコードの対応するデータ メンバー。

status
[入力] 列の状態にバインドされる変数。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

COLUMN_NAME_TYPE

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロはデータ型も受け取る点が異なります。

構文

COLUMN_NAME_TYPE(pszName, wType, data)

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

wType
[入力] データ型。

data
[入力] ユーザー レコードの対応するデータ メンバー。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

COLUMN_NAME_TYPE_PS

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロはデータ型、有効桁数、小数点以下桁数も受け取る点が異なります。

構文

COLUMN_NAME_TYPE_PS(pszName, wType, nPrecision, nScale, data)

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

wType
[入力] データ型。

nPrecision
[入力] データの取得時に wTypeDBTYPE_NUMERIC である場合に使う最大有効桁数。 それ以外の場合、このパラメーターは無視されます。

nScale
[入力] データの取得時に wTypeDBTYPE_NUMERIC または DBTYPE_DECIMAL である場合に使う小数点以下桁数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

COLUMN_NAME_TYPE_SIZE

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロはデータ型とサイズも受け取る点が異なります。

構文

COLUMN_NAME_TYPE_SIZE(pszName, wType, nLength, data)

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

wType
[入力] データ型。

nLength
[入力] バイト単位のデータ サイズ。

data
[入力] ユーザー レコードの対応するデータ メンバー。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

COLUMN_NAME_TYPE_STATUS

行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロはデータ型と列の状態も受け取る点が異なります。

構文

COLUMN_NAME_TYPE_STATUS(pszName, wType, status, data)

パラメーター

pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn")。

wType
[入力] データ型。

status
[入力] 列の状態にバインドされる変数。

data
[入力] ユーザー レコードの対応するデータ メンバー。

解説

COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。

END_COLUMN_MAP

列マップ エントリの終了位置を示します。

構文

END_COLUMN_MAP()

解説

行セットの 1 つのアクセサーに使われます。 BEGIN_COLUMN_MAP マクロは END_COLUMN_MAP マクロを使って完了します。

BEGIN_COLUMN_MAP」を参照してください。

DEFINE_COMMAND

CCommand クラスを使う場合に、行セットの作成に使うコマンドを指定します。 指定したアプリケーションの種類に一致する文字列型 (ANSI または Unicode) のみを受け入れます。

Note

DEFINE_COMMAND ではなく DEFINE_COMMAND_EX を使うことをお勧めします。

構文

DEFINE_COMMAND(x, szCommand)

パラメーター

x
[入力] ユーザー レコード (コマンド) クラスの名前。

szCommand
[入力] CCommand の使用時に行セットの作成に使うコマンド文字列。

解説

CCommand::Open メソッドでコマンド テキストを指定しない場合、指定したコマンド文字列が既定値として使われます。

このマクロは、アプリケーションを ANSI としてビルドした場合には ANSI 文字列を、アプリケーションを Unicode としてビルドした場合は Unicode 文字列を受け入れます。 DEFINE_COMMAND ではなく DEFINE_COMMAND_EX を使うことをお勧めします。なぜなら、ANSI または Unicode というアプリケーションの種類に関係なく、後者は Unicode 文字列を受け入れることができるからです。

BOOKMARK_ENTRY」を参照してください。

DEFINE_COMMAND_EX

CCommand クラスを使う場合に、行セットの作成に使うコマンドを指定します。 Unicode と ANSI のアプリケーションをサポートします。

構文

DEFINE_COMMAND_EX(x, wszCommand)

パラメーター

x
[入力] ユーザー レコード (コマンド) クラスの名前。

wszCommand
[入力] CCommand の使用時に行セットの作成に使うコマンド文字列。

解説

CCommand::Open メソッドでコマンド テキストを指定しない場合、指定したコマンド文字列が既定値として使われます。

このマクロは、アプリケーションの種類に関係なく、Unicode 文字列を受け入れます。 このマクロの方が DEFINE_COMMAND よりも推奨されます。なぜなら、ANSI アプリケーションだけでなく、Unicode もサポートするためです。

BOOKMARK_ENTRY」を参照してください。

BEGIN_PARAM_MAP

パラメーター マップ エントリの開始位置を示します。

構文

BEGIN_PARAM_MAP(x)

パラメーター

x
[入力] ユーザー レコード クラスの名前。

解説

パラメーターはコマンドから使われます。

BEGIN_COLUMN_MAP マクロの例を参照してください。

END_PARAM_MAP

パラメーター マップ エントリの終了位置を示します。

構文

END_PARAM_MAP()

BEGIN_PARAM_MAP マクロの例を参照してください。

SET_PARAM_TYPE

入力、出力、または入出力として、SET_PARAM_TYPE マクロの次に COLUMN_ENTRY マクロを指定します。

構文

SET_PARAM_TYPE(type)

パラメーター

type
[入力] 設定するパラメーターの種類。

解説

プロバイダーは、基になるデータ ソースによってサポートされているパラメーター入出力タイプだけをサポートします。 type は、1 つ以上の DBPARAMIO 値の組み合わせです (「OLE DB プログラマーズ リファレンス」の「DBBINDING 構造体」を参照してください)。

  • DBPARAMIO_NOTPARAM アクセサーにはパラメーターがありません。 通常、行アクセサーで eParamIO をこの値に設定して、パラメーターが無視されることをユーザーに知らせます。

  • DBPARAMIO_INPUT 入力パラメーター。

  • DBPARAMIO_OUTPUT 出力パラメーター。

  • DBPARAMIO_INPUT | DBPARAMIO_OUTPUT パラメーターが出力パラメーターと入力パラメーターの両方である場合。

class CArtistsProperty
{
public:
   short m_nReturn;
   short m_nAge;
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];

BEGIN_PARAM_MAP(CArtistsProperty)
   SET_PARAM_TYPE(DBPARAMIO_OUTPUT)
   COLUMN_ENTRY(1, m_nReturn)
   SET_PARAM_TYPE(DBPARAMIO_INPUT)
   COLUMN_ENTRY(2, m_nAge)
END_PARAM_MAP()

BEGIN_COLUMN_MAP(CArtistsProperty)
   COLUMN_ENTRY(1, m_szFirstName)
   COLUMN_ENTRY(2, m_szLastName)
END_COLUMN_MAP()

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsProperty, L" \
      { ? = SELECT Age FROM Artists WHERE Age < ? }")
};

要件

ヘッダー: atldbcli.h

関連項目

OLE DB コンシューマー テンプレート用マクロおよびグローバル関数
OLE DB コンシューマー テンプレートに関するページ
OLE DB コンシューマー テンプレート リファレンス