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を使用します。 プロパティの VARTYPE
と DBPROPFLAGS を同時に設定するには、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 プロバイダー テンプレート用マクロ