次の方法で共有


OLE DB プロバイダー テンプレート用マクロ

OLE DB テンプレート プロバイダー マクロには、次のカテゴリの機能が用意されています。

プロパティ セット マップ マクロ

名前 説明
BEGIN_PROPERTY_SET プロパティ セットの先頭を示します。
BEGIN_PROPERTY_SET_EX プロパティ セットの先頭を示します。
BEGIN_PROPSET_MAP プロバイダーのスコープ外で非表示にしたり定義したりできるプロパティ セットの先頭を示します。
CHAIN_PROPERTY_SET プロパティ グループを連結します。
END_PROPERTY_SET プロパティ セットの末尾を示します。
END_PROPSET_MAP プロパティ セット マップの末尾を示します。
PROPERTY_INFO_ENTRY プロパティ セットの特定のプロパティを既定値に設定します。
PROPERTY_INFO_ENTRY_EX プロパティ セットの特定のプロパティを、指定した値に設定します。 フラグとオプションを設定することもできます。
PROPERTY_INFO_ENTRY_VALUE プロパティ セットの特定のプロパティを、指定した値に設定します。

列マップ マクロ

名前 説明
BEGIN_PROVIDER_COLUMN_MAP プロバイダー列マップ エントリの先頭を示します。
END_PROVIDER_COLUMN_MAP プロバイダー列マップ エントリの末尾を示します。
PROVIDER_COLUMN_ENTRY プロバイダーでサポートされている特定の列を表します。
PROVIDER_COLUMN_ENTRY_FIXED プロバイダーでサポートされている特定の列を表します。 列のデータ型を指定できます。
PROVIDER_COLUMN_ENTRY_GN プロバイダーでサポートされている特定の列を表します。 列のサイズ、データ型、有効桁数、小数点以下桁数、スキーマ行セットの GUID を指定できます。
PROVIDER_COLUMN_ENTRY_LENGTH プロバイダーでサポートされている特定の列を表します。 列のサイズを指定できます。
PROVIDER_COLUMN_ENTRY_STR プロバイダーでサポートされている特定の列を表します。 列の型が文字列であることを前提としています。
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH プロバイダーでサポートされている特定の列を表します。 PROVIDER_COLUMN_ENTRY_LENGTH に似ていますが、サイズだけでなく列のデータ型も指定できます。
PROVIDER_COLUMN_ENTRY_WSTR プロバイダーでサポートされている特定の列を表します。 列の型が Unicode 文字列であることを前提としています。

スキーマ行セット マクロ

名前 説明
BEGIN_SCHEMA_MAP スキーマ マップの先頭を示します。
END_SCHEMA_MAP スキーマ マップの末尾を示します。
SCHEMA_ENTRY GUID をクラスに関連付けます。

必要条件

ヘッダー: atldb.h

BEGIN_PROPERTY_SET

プロパティ セット マップ内のプロパティ セットの先頭を示します。

構文

BEGIN_PROPERTY_SET(guid)

パラメーター

guid
[入力] プロパティの GUID。

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

BEGIN_PROPERTY_SET_EX

プロパティ セット マップ内のプロパティ セットの先頭を示します。

構文

BEGIN_PROPERTY_SET_EX(guid, flags)

パラメーター

guid
[入力] プロパティの GUID。

flags
[入力] 公開しないプロパティ セットの場合は UPROPSET_HIDDEN、プロバイダーのスコープ外で定義されたプロパティを公開するプロバイダーの場合は UPROPSET_PASSTHROUGH。

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

BEGIN_PROPSET_MAP

プロパティ セット マップ エントリの先頭を示します。

構文

BEGIN_PROPSET_MAP(Class)

パラメーター

クラス
[入力] このプロパティ セットが指定されているクラス。 プロパティ セットは、次の OLE DB オブジェクトで指定できます。

プロパティ セット マップのサンプルを次に示します。

BEGIN_PROPSET_MAP(CCustomSource)
    BEGIN_PROPERTY_SET(DBPROPSET_DATASOURCEINFO)
        PROPERTY_INFO_ENTRY(ACTIVESESSIONS)
        PROPERTY_INFO_ENTRY(DATASOURCEREADONLY)
        PROPERTY_INFO_ENTRY(BYREFACCESSORS)
        PROPERTY_INFO_ENTRY(OUTPUTPARAMETERAVAILABILITY)
        PROPERTY_INFO_ENTRY(PROVIDEROLEDBVER)
        PROPERTY_INFO_ENTRY(DSOTHREADMODEL)
        PROPERTY_INFO_ENTRY(SUPPORTEDTXNISOLEVELS)
        PROPERTY_INFO_ENTRY(USERNAME)
    END_PROPERTY_SET(DBPROPSET_DATASOURCEINFO)
    BEGIN_PROPERTY_SET(DBPROPSET_DBINIT)
        PROPERTY_INFO_ENTRY(AUTH_PASSWORD)
        PROPERTY_INFO_ENTRY(AUTH_PERSIST_SENSITIVE_AUTHINFO)
        PROPERTY_INFO_ENTRY(AUTH_USERID)
        PROPERTY_INFO_ENTRY(INIT_DATASOURCE)
        PROPERTY_INFO_ENTRY(INIT_HWND)
        PROPERTY_INFO_ENTRY(INIT_LCID)
        PROPERTY_INFO_ENTRY(INIT_LOCATION)
        PROPERTY_INFO_ENTRY(INIT_MODE)
        PROPERTY_INFO_ENTRY(INIT_PROMPT)
        PROPERTY_INFO_ENTRY(INIT_PROVIDERSTRING)
        PROPERTY_INFO_ENTRY(INIT_TIMEOUT)
    END_PROPERTY_SET(DBPROPSET_DBINIT)
    CHAIN_PROPERTY_SET(CCustomSession)
    CHAIN_PROPERTY_SET(CCustomCommand)
END_PROPSET_MAP()

CHAIN_PROPERTY_SET

このマクロは、プロパティ グループを連結します。

構文

CHAIN_PROPERTY_SET(ChainClass)

パラメーター

ChainClass
[入力] プロパティを連結するクラスの名前。 これは、ATL プロジェクト ウィザードによって生成されるクラスであり、既にマップ (セッション、コマンド、データ ソース オブジェクト クラスなど) が含まれています。

解説

別のクラスのプロパティ セットを自分のクラスに連結して、クラスから直接プロパティにアクセスするようにできます。

注意事項

このマクロは慎重に使ってください。 使用が不適切だと、コンシューマーが OLE DB 準拠合致テストに失敗する場合があります。

END_PROPERTY_SET

プロパティ セットの末尾を示します。

構文

END_PROPERTY_SET(guid)

パラメーター

guid
[入力] プロパティの GUID。

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

END_PROPSET_MAP

プロパティ セット マップ エントリの末尾を示します。

構文

END_PROPSET_MAP()

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

PROPERTY_INFO_ENTRY

プロパティ セットの特定のプロパティを表します。

構文

PROPERTY_INFO_ENTRY(dwPropID)

パラメーター

dwPropID
[入力] プロパティ セット GUID と組み合わせて使用してプロパティを特定する DBPROPID 値。

解説

このマクロは、 DWORD 型のプロパティ値を、ATLDB.H で定義された既定値に設定します。 選択した値にプロパティを設定するには、 PROPERTY_INFO_ENTRY_VALUEを使用します。 プロパティの VARTYPEDBPROPFLAGS を同時に設定するには、PROPERTY_INFO_ENTRY_EX を使います。

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

PROPERTY_INFO_ENTRY_EX

プロパティ セットの特定のプロパティを表します。

構文

PROPERTY_INFO_ENTRY_EX(dwPropID, vt, dwFlags, value, options)

パラメーター

dwPropID
[入力] プロパティ セット GUID と組み合わせて使用してプロパティを特定する DBPROPID 値。

vt
[入力] このプロパティ エントリの VARTYPE。 (wtypes. h で定義)

dwFlags
[入力] このプロパティ エントリを記述している DBPROPFLAGS 値。

value
[入力] DWORD型のプロパティ値。

options
DBPROPOPTIONS_REQUIRED または DBPROPOPTIONS_SETIFCHEAP。 通常、options はコンシューマーによって設定されるため、プロバイダーが設定する必要はありません。

解説

このマクロでは、オプションとフラグだけでなく、 DWORD 型のプロパティの値を直接指定できます。 単にプロパティを ATLDB.H に定義されている既定値に設定するには、 PROPERTY_INFO_ENTRYを使用します。 オプションやフラグを設定せずに任意の値にプロパティを設定するには、 PROPERTY_INFO_ENTRY_VALUEを使用します。

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

PROPERTY_INFO_ENTRY_VALUE

プロパティ セットの特定のプロパティを表します。

構文

PROPERTY_INFO_ENTRY_VALUE(dwPropID, value)

パラメーター

dwPropID
[入力] プロパティ セット GUID と組み合わせて使用してプロパティを特定する DBPROPID 値。

value
[入力] DWORD型のプロパティ値。

解説

このマクロを使えば、型 DWORD のプロパティ値を直接指定することができます。 プロパティを ATLDB.H に定義されている既定値に設定するには、PROPERTY_INFO_ENTRY を使います。 プロパティの値、フラグ、オプションを設定するには PROPERTY_INFO_ENTRY_EX を使います。

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

BEGIN_PROVIDER_COLUMN_MAP

プロバイダー列マップ エントリの先頭を示します。

構文

BEGIN_PROVIDER_COLUMN_MAP(theClass)

パラメーター

theClass
[入力] このマップが属するクラスの名前。

プロバイダー列マップのサンプルを次に示します。

BEGIN_PROVIDER_COLUMN_MAP(CCustomWindowsFile)
    PROVIDER_COLUMN_ENTRY("FileAttributes", 1, dwFileAttributes)
    PROVIDER_COLUMN_ENTRY("FileSizeHigh", 2, nFileSizeHigh)
    PROVIDER_COLUMN_ENTRY("FileSizeLow", 3, nFileSizeLow)
    PROVIDER_COLUMN_ENTRY_STR("FileName", 4, cFileName)
    PROVIDER_COLUMN_ENTRY_STR("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()

END_PROVIDER_COLUMN_MAP

プロバイダー列マップ エントリの末尾を示します。

構文

END_PROVIDER_COLUMN_MAP()

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

PROVIDER_COLUMN_ENTRY

プロバイダーでサポートされている特定の列を表します。

構文

PROVIDER_COLUMN_ENTRY (name, ordinal, member)

Parameters

name
[入力] 列名。

ordinal (序数)
[入力] 列番号。 列がブックマーク列でない場合は、列番号を 0 にすることはできません。

member
[入力] 列に対応する dataClass 内のメンバー変数。

PROVIDER_COLUMN_ENTRY_FIXED

プロバイダーでサポートされている特定の列を表します。

構文

PROVIDER_COLUMN_ENTRY_FIXED(name, ordinal, dbtype, member)

Parameters

name
[入力] 列名。

ordinal (序数)
[入力] 列番号。 列がブックマーク列でない場合は、列番号を 0 にすることはできません。

dbtype
[入力] DBTYPE のデータ型。

member
[入力] データを格納する dataClass 内のメンバー変数。

解説

列のデータ型を指定できます。

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

PROVIDER_COLUMN_ENTRY_GN

プロバイダーでサポートされている特定の列を表します。

構文

PROVIDER_COLUMN_ENTRY_GN (name, ordinal, flags, colSize, dbtype, precision, scale, guid)

Parameters

name
[入力] 列名。

ordinal (序数)
[入力] 列番号。 列がブックマーク列でない場合は、列番号を 0 にすることはできません。

flags
[入力] データを返す方法を指定します。 「DBBINDING 構造体」の dwFlags の説明を参照してください。

colSize
[入力] 列のサイズ。

dbtype
[入力] 値のデータ型を示します。 「DBBINDING 構造体」の wType の説明を参照してください。

有効桁数 (precision)
[入力] dbType が DBTYPE_NUMERIC または DBTYPE_DECIMAL の場合、データを取得するときの有効桁数を示します。 「DBBINDING 構造体」の bPrecision の説明を参照してください。

scale
[入力] dbType が DBTYPE_NUMERIC または DBTYPE_DECIMAL の場合、データを取得するときの小数点以下桁数を示します。 「DBBINDING 構造体」の bScale の説明を参照してください。

guid
スキーマ行セットの GUID。 スキーマ行セットとその GUID の一覧については、「OLE DB プログラマーズ リファレンス」の「IDBSchemaRowset」を参照してください。

解説

列のサイズ、データ型、有効桁数、小数点以下桁数、スキーマ行セットの GUID を指定できます。

PROVIDER_COLUMN_ENTRY_LENGTH

プロバイダーでサポートされている特定の列を表します。

構文

PROVIDER_COLUMN_ENTRY_LENGTH(name, ordinal, size, member)

Parameters

name
[入力] 列名。

ordinal (序数)
[入力] 列番号。 列がブックマーク列でない場合は、列番号を 0 にすることはできません。

size
[入力] 列のサイズ (バイト単位)。

member
[入力] 列データを格納する dataClass 内のメンバー変数。

解説

列のサイズを指定できます。

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

PROVIDER_COLUMN_ENTRY_STR

プロバイダーでサポートされている特定の列を表します。

構文

PROVIDER_COLUMN_ENTRY_STR(name, ordinal, member)

Parameters

name
[入力] 列名。

ordinal (序数)
[入力] 列番号。 列がブックマーク列でない場合は、列番号を 0 にすることはできません。

member
[入力] データを格納するデータ クラスのメンバー変数。

解説

列データが DBTYPE_STR であると想定される場合にこのマクロを使います。

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

PROVIDER_COLUMN_ENTRY_TYPE_LENGTH

プロバイダーでサポートされている特定の列を表します。

構文

PROVIDER_COLUMN_ENTRY_TYPE_LENGTH(name, ordinal, dbtype, size, member)

Parameters

name
[入力] 列名。

ordinal (序数)
[入力] 列番号。 列がブックマーク列でない場合は、列番号を 0 にすることはできません。

dbtype
[入力] DBTYPE のデータ型。

size
[入力] 列のサイズ (バイト単位)。

member
[入力] データを格納するデータ クラスのメンバー変数。

解説

PROVIDER_COLUMN_ENTRY_LENGTH に似ていますが、サイズだけでなく列のデータ型も指定できます。

PROVIDER_COLUMN_ENTRY_WSTR

プロバイダーでサポートされている特定の列を表します。

構文

PROVIDER_COLUMN_ENTRY_WSTR(name, ordinal, member)

Parameters

name
[入力] 列名。

ordinal (序数)
[入力] 列番号。 列がブックマーク列でない場合は、列番号を 0 にすることはできません。

member
[入力] データを格納するデータ クラスのメンバー変数。

解説

このマクロは、列データが null 値で終端する Unicode 文字列 DBTYPE_WSTR の場合に使います。

BEGIN_SCHEMA_MAP

スキーマ マップの先頭を示します。

構文

BEGIN_SCHEMA_MAP(SchemaClass);

パラメーター

SchemaClass
MAP を含むクラス。 通常、これはセッション クラスです。

解説

スキーマ行セットの詳細については、Windows SDK の「IDBSchemaRowset」を参照してください。

END_SCHEMA_MAP

スキーマ マップの末尾を示します。

構文

END_SCHEMA_MAP()

解説

詳細については、「IDBSchemaRowsetImpl クラス」を参照してください。

SCHEMA_ENTRY

GUID をクラスに関連付けます。

構文

SCHEMA_ENTRY(guid,
   rowsetClass);

パラメーター

guid
スキーマ行セットの GUID。 スキーマ行セットとその GUID の一覧については、「OLE DB プログラマーズ リファレンス」の「IDBSchemaRowset」を参照してください。

rowsetClass
スキーマ行セットを表すために作成されるクラス。

解説

IDBSchemaRowsetImpl は、GUID の一覧をマップに問い合わせたり、GUID が指定された場合は行セットを作成したりします。 IDBSchemaRowsetImpl が作成するスキーマ行セットは、標準的な CRowsetImpl 派生クラスと似ていますが、次のシグネチャを持つ Execute メソッドを用意する必要があります。

HRESULT Execute (LONG* pcRowsAffected,
    ULONG cRestrictions,
    const VARIANT* rgRestrictions);

この Execute 関数は、行セットのデータを追加します。 ATL プロジェクト ウィザードは、「OLE DB プログラマーズ リファレンス」の「IDBSchemaRowset」で説明されているように、次の 3 つの必須 OLE DB スキーマのそれぞれについて、プロジェクト内に 3 つの初期スキーマ行セットを作成します。

  • DBSCHEMA_TABLES

  • DBSCHEMA_COLUMNS

  • DBSCHEMA_PROVIDER_TYPES

また、スキーマ マップには、3 つの対応するエントリが追加されます。 ウィザードを使ってプロバイダーを作成する方法の詳細については、OLE DB テンプレート プロバイダーの作成に関する記事を参照してください。

関連項目

OLE DB プロバイダー テンプレートに関するページ
OLE DB プロバイダー テンプレートのアーキテクチャ
OLE DB プロバイダーの作成
OLE DB プロバイダー テンプレート リファレンス
OLE DB プロバイダー テンプレート用マクロ