Makros für OLE DB-Anbietervorlagen

Die OLE DB-Vorlagenanbietermakros bieten Funktionen in den folgenden Kategorien:

Eigenschaftensatzzuordnungsmakros

Name Beschreibung
BEGIN_PROPERTY_SET Markiert den Anfang eines Eigenschaftensatzes.
BEGIN_PROPERTY_SET_EX Markiert den Anfang eines Eigenschaftensatzes.
BEGIN_PROPSET_MAP Markiert den Anfang eines Eigenschaftensatzes, der ausgeblendet oder außerhalb des Bereichs des Anbieters definiert werden kann.
CHAIN_PROPERTY_SET Verketten von Eigenschaftengruppen.
END_PROPERTY_SET Markiert das Ende eines Eigenschaftensatzes.
END_PROPSET_MAP Markiert das Ende einer Eigenschaftensatzzuordnung.
PROPERTY_INFO_ENTRY Legt eine bestimmte Eigenschaft in einer Eigenschaft fest, die auf einen Standardwert festgelegt ist.
PROPERTY_INFO_ENTRY_EX Legt eine bestimmte Eigenschaft in einer Eigenschaft auf einen von Ihnen bereitgestellten Wert fest. Außerdem können Sie Kennzeichnungen und Optionen festlegen.
PROPERTY_INFO_ENTRY_VALUE Legt eine bestimmte Eigenschaft in einer Eigenschaft auf einen von Ihnen bereitgestellten Wert fest.

Spaltenzuordnungsmakros

Name Beschreibung
BEGIN_PROVIDER_COLUMN_MAP Markiert den Anfang der Einträge für die Anbieterspaltenzuordnung.
END_PROVIDER_COLUMN_MAP Markiert das Ende der Spaltenzuordnungseinträge des Anbieters.
PROVIDER_COLUMN_ENTRY Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird.
PROVIDER_COLUMN_ENTRY_FIXED Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird. Sie können den Spaltendatentyp angeben.
PROVIDER_COLUMN_ENTRY_GN Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird. Sie können die Größe, den Datentyp, die Genauigkeit, die Skalierung und die Schema-Rowset-GUID angeben.
PROVIDER_COLUMN_ENTRY_LENGTH Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird. Sie können die Spaltengröße angeben.
PROVIDER_COLUMN_ENTRY_STR Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird. Es wird davon ausgegangen, dass der Spaltentyp eine Zeichenfolge ist.
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird. Wie PROVIDER_COLUMN_ENTRY_LENGTH können Sie aber auch den Datentyp der Spalte sowie die Größe angeben.
PROVIDER_COLUMN_ENTRY_WSTR Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird. Es wird davon ausgegangen, dass der Spaltentyp eine Unicode-Zeichenzeichenfolge ist.

Schema-Rowset-Makros

Name Beschreibung
BEGIN_SCHEMA_MAP Markiert den Anfang einer Schemazuordnung.
END_SCHEMA_MAP Markiert das Ende einer Schemazuordnung.
SCHEMA_ENTRY Ordnet eine GUID einer Klasse zu.

Anforderungen

Header: „atldb.h“

BEGIN_PROPERTY_SET

Markiert den Anfang eines Eigenschaftensatzes in einer Eigenschaftensatzzuordnung.

Syntax

BEGIN_PROPERTY_SET(guid)

Parameter

guid
[in] Die Eigenschaften-GUID.

Beispiel

Siehe BEGIN_PROPSET_MAP.

BEGIN_PROPERTY_SET_EX

Markiert den Anfang eines Eigenschaftensatzes in einer Eigenschaftensatzzuordnung.

Syntax

BEGIN_PROPERTY_SET_EX(guid, flags)

Parameter

guid
[in] Die Eigenschaften-GUID.

flags
[in] UPROPSET_HIDDEN für eigenschaftensätze, die Sie nicht verfügbar machen möchten, oder UPROPSET_PASSTHROUGH für einen Anbieter, der Eigenschaften verfügbar macht, die außerhalb des Bereichs des Anbieters definiert sind.

Beispiel

Siehe BEGIN_PROPSET_MAP.

BEGIN_PROPSET_MAP

Markiert den Anfang der Eigenschaftensatzzuordnungseinträge.

Syntax

BEGIN_PROPSET_MAP(Class)

Parameter

Klasse
[in] Die Klasse, in der dieser Eigenschaftensatz angegeben wird. Ein Eigenschaftensatz kann in den folgenden OLE DB-Objekten angegeben werden:

Beispiel

Hier ist eine Beispiel-Eigenschaftensatzzuordnung:

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

Mit diesem Makro werden Eigenschaftengruppen miteinander verkettet.

Syntax

CHAIN_PROPERTY_SET(ChainClass)

Parameter

ChainClass
[in] Der Name der Klasse, für die Eigenschaften verkettet werden sollen. Dies ist eine Klasse, die vom ATL-Projekt-Assistenten generiert wird, der bereits eine Zuordnung enthält (z. B. eine Sitzung, einen Befehl oder eine Datenquellenobjektklasse).

Hinweise

Sie können eine Eigenschaft, die von einer anderen Klasse an Ihre eigene Klasse festgelegt ist, verketten und dann direkt von Ihrer Klasse aus auf die Eigenschaften zugreifen.

Achtung

Verwenden Sie dieses Makro sparsam. Falsche Verwendung kann dazu führen, dass ein Verbraucher die OLE DB-Konformitätstests fehlschlägt.

END_PROPERTY_SET

Markiert das Ende eines Eigenschaftensatzes.

Syntax

END_PROPERTY_SET(guid)

Parameter

guid
[in] Die Eigenschaften-GUID.

Beispiel

Siehe BEGIN_PROPSET_MAP.

END_PROPSET_MAP

Markiert das Ende von Eigenschaftensatzzuordnungseinträgen.

Syntax

END_PROPSET_MAP()

Beispiel

Siehe BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY

Stellt eine bestimmte Eigenschaft in einem Eigenschaftensatz dar.

Syntax

PROPERTY_INFO_ENTRY(dwPropID)

Parameter

dwPropID
[in] Ein DBPROPID -Wert, der in Verbindung mit dem Eigenschaftensatz GUID verwendet werden kann, um eine Eigenschaft zu identifizieren.

Hinweise

Dieses Makro legt den Wert der Eigenschaft vom Typ DWORD auf einen in ATLDB.H definierten Standardwert fest. Verwenden Sie PROPERTY_INFO_ENTRY_VALUE, um die Eigenschaft auf einen Wert Ihrer Wahl festzulegen. Verwenden Sie PROPERTY_INFO_ENTRY_EX, um die VARTYPE Eigenschaft und DBPROPFLAGS für die Eigenschaft gleichzeitig festzulegen.

Beispiel

Siehe BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY_EX

Stellt eine bestimmte Eigenschaft in einem Eigenschaftensatz dar.

Syntax

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

Parameter

dwPropID
[in] Ein DBPROPID -Wert, der in Verbindung mit dem Eigenschaftensatz GUID verwendet werden kann, um eine Eigenschaft zu identifizieren.

vt
[in] Die VARTYPE dieses Eigenschaftseintrags. (Definiert in wtypes.h)

dwFlags
[in] Ein DBPROPFLAGS -Wert, der diesen Eigenschaftseintrag beschreibt.

value
[in] Der Eigenschaftswert von Typ DWORD.

Optionen
Entweder DBPROPOPTIONS_REQUIRED oder DBPROPOPTIONS_SETIFCHEAP. Normalerweise muss ein Anbieter keine Optionen festlegen, da er vom Verbraucher festgelegt wird.

Hinweise

Mit diesem Makro können Sie den Wert der Eigenschaft des Typs DWORD sowie Optionen und Flags direkt angeben. Um lediglich einen in ATLDB.H definierten Standardwert für eine Eigenschaft festzulegen, verwenden Sie PROPERTY_INFO_ENTRY. Um einen Wert Ihrer Wahl für eine Eigenschaft festzulegen, verwenden Sie PROPERTY_INFO_ENTRY_VALUE.

Beispiel

Siehe BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY_VALUE

Stellt eine bestimmte Eigenschaft in einem Eigenschaftensatz dar.

Syntax

PROPERTY_INFO_ENTRY_VALUE(dwPropID, value)

Parameter

dwPropID
[in] Ein DBPROPID -Wert, der in Verbindung mit dem Eigenschaftensatz GUID verwendet werden kann, um eine Eigenschaft zu identifizieren.

value
[in] Der Eigenschaftswert von Typ DWORD.

Hinweise

Mit diesem Makro können Sie den Eigenschaftswert des Typs DWORDdirekt angeben. So legen Sie die Eigenschaft auf den Standardwert fest, der in ATLDB definiert ist. H, verwenden Sie PROPERTY_INFO_ENTRY. Verwenden Sie PROPERTY_INFO_ENTRY_EX, um den Wert, die Kennzeichnungen und Optionen für die Eigenschaft festzulegen.

Beispiel

Siehe BEGIN_PROPSET_MAP.

BEGIN_PROVIDER_COLUMN_MAP

Markiert den Anfang der Einträge für die Anbieterspaltenzuordnung.

Syntax

BEGIN_PROVIDER_COLUMN_MAP(theClass)

Parameter

theClass
[in] Der Name der Klasse, zu der diese Karte gehört.

Beispiel

Hier ist eine Beispiel für eine Anbieterspaltenzuordnung:

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

Markiert das Ende der Spaltenzuordnungseinträge des Anbieters.

Syntax

END_PROVIDER_COLUMN_MAP()

Beispiel

Siehe BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY

Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird.

Syntax

PROVIDER_COLUMN_ENTRY (name, ordinal, member)

Parameter

name
[in] Der Spaltenname.

ordinal
[in] Die Spaltennummer. Sofern es sich bei der Spalte nicht um eine Textmarke handelt, darf die Spaltennummer nicht 0 sein.

member
[in] Die Membervariable, dataClass die der Spalte entspricht.

PROVIDER_COLUMN_ENTRY_FIXED

Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird.

Syntax

PROVIDER_COLUMN_ENTRY_FIXED(name, ordinal, dbtype, member)

Parameter

name
[in] Der Spaltenname.

ordinal
[in] Die Spaltennummer. Sofern es sich bei der Spalte nicht um eine Textmarke handelt, darf die Spaltennummer nicht 0 sein.

dbtype
[in] Der Datentyp in DBTYPE.

member
[in] Die Membervariable, in dataClass der die Daten gespeichert werden.

Hinweise

Ermöglicht ihnen das Angeben des Spaltendatentyps.

Beispiel

Siehe BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_GN

Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird.

Syntax

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

Parameter

name
[in] Der Spaltenname.

ordinal
[in] Die Spaltennummer. Sofern es sich bei der Spalte nicht um eine Textmarke handelt, darf die Spaltennummer nicht 0 sein.

flags
[in] Gibt an, wie Daten zurückgegeben werden. Weitere Informationen finden Sie in der dwFlags Beschreibung in DBBINDING-Strukturen.

colSize
[in] Die Spaltengröße.

dbtype
[in] Gibt den Datentyp des Werts an. Weitere Informationen finden Sie in der wType Beschreibung in DBBINDING-Strukturen.

precision
[in] Gibt die Genauigkeit an, die beim Abrufen von Daten verwendet werden soll, wenn dbType DBTYPE_NUMERIC oder DBTYPE_DECIMAL ist. Weitere Informationen finden Sie in der bPrecision Beschreibung in DBBINDING-Strukturen.

scale
[in] Gibt die Skalierung an, die beim Abrufen von Daten verwendet werden soll, wenn dbType DBTYPE_NUMERIC oder DBTYPE_DECIMAL ist. Weitere Informationen finden Sie in der bScale Beschreibung in DBBINDING-Strukturen.

guid
Eine Schema-Rowset-GUID. Eine Liste der Schema-Rowsets und deren GUIDs finden Sie unter IDBSchemaRowset in der OLE DB-Programmierreferenz .

Hinweise

Ermöglicht ihnen die Angabe der Spaltengröße, des Datentyps, der Genauigkeit, der Skalierung und der Schema-Rowset-GUID.

PROVIDER_COLUMN_ENTRY_LENGTH

Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird.

Syntax

PROVIDER_COLUMN_ENTRY_LENGTH(name, ordinal, size, member)

Parameter

name
[in] Der Spaltenname.

ordinal
[in] Die Spaltennummer. Sofern es sich bei der Spalte nicht um eine Textmarke handelt, darf die Spaltennummer nicht 0 sein.

size
[in] Die Spaltengröße in Byte.

member
[in] Die Membervariable, in dataClass der die Spaltendaten gespeichert werden.

Hinweise

Ermöglicht es Ihnen, die Spaltengröße anzugeben.

Beispiel

Siehe BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_STR

Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird.

Syntax

PROVIDER_COLUMN_ENTRY_STR(name, ordinal, member)

Parameter

name
[in] Der Spaltenname.

ordinal
[in] Die Spaltennummer. Sofern es sich bei der Spalte nicht um eine Textmarke handelt, darf die Spaltennummer nicht 0 sein.

member
[in] Die Membervariable in der Datenklasse, die die Daten speichert.

Hinweise

Verwenden Sie dieses Makro, wenn die Spaltendaten als DBTYPE_STR angenommen werden.

Beispiel

Siehe BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_TYPE_LENGTH

Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird.

Syntax

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

Parameter

name
[in] Der Spaltenname.

ordinal
[in] Die Spaltennummer. Sofern es sich bei der Spalte nicht um eine Textmarke handelt, darf die Spaltennummer nicht 0 sein.

dbtype
[in] Der Datentyp in DBTYPE.

size
[in] Die Spaltengröße in Byte.

member
[in] Die Membervariable in der Datenklasse, die die Daten speichert.

Hinweise

Ähnlich wie PROVIDER_COLUMN_ENTRY_LENGTH können Sie aber auch den Datentyp der Spalte sowie die Größe angeben.

PROVIDER_COLUMN_ENTRY_WSTR

Stellt eine bestimmte Spalte dar, die vom Anbieter unterstützt wird.

Syntax

PROVIDER_COLUMN_ENTRY_WSTR(name, ordinal, member)

Parameter

name
[in] Der Spaltenname.

ordinal
[in] Die Spaltennummer. Sofern es sich bei der Spalte nicht um eine Textmarke handelt, darf die Spaltennummer nicht 0 sein.

member
[in] Die Membervariable in der Datenklasse, die die Daten speichert.

Hinweise

Verwenden Sie dieses Makro, wenn es sich bei den Spaltendaten um eine mit Null beendete Unicode-Zeichenzeichenfolge handelt, DBTYPE_WSTR.

BEGIN_SCHEMA_MAP

Gibt den Anfang einer Schemazuordnung an.

Syntax

BEGIN_SCHEMA_MAP(SchemaClass);

Parameter

SchemaClass
Die Klasse, die die MAP enthält. In der Regel ist dies die Sitzungsklasse.

Hinweise

Weitere Informationen zu Schema-Rowsets finden Sie unter IDBSchemaRowset im Windows SDK.

END_SCHEMA_MAP

Gibt das Ende der Schemazuordnung an.

Syntax

END_SCHEMA_MAP()

Hinweise

Weitere Informationen finden Sie unter IDBSchemaRowsetImpl Class.

SCHEMA_ENTRY

Ordnet eine GUID einer Klasse zu.

Syntax

SCHEMA_ENTRY(guid,
   rowsetClass);

Parameter

guid
Eine Schema-Rowset-GUID. Eine Liste der Schema-Rowsets und deren GUIDs finden Sie unter IDBSchemaRowset in der OLE DB-Programmierreferenz .

rowsetClass
Die Klasse, die erstellt wird, um das Schema-Rowset darzustellen.

Hinweise

IDBSchemaRowsetImpl kann dann die Zuordnung nach einer Liste von GUIDs abfragen oder ein Rowset erstellen, wenn sie eine GUID erhält. Das vom Schema-Rowset erstellte IDBSchemaRowsetImpl Objekt ähnelt einer standardmäßigen CRowsetImplabgeleiteten Klasse, mit der Ausnahme, dass sie eine Execute Methode mit der folgenden Signatur bereitstellen muss:

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

Diese Execute Funktion füllt die Daten des Rowsets auf. Der ATL-Projekt-Assistent erstellt, wie in IDBSchemaRowset in der OLE DB-Programmierreferenz beschrieben, drei anfängliche Schema-Rowsets im Projekt für jedes der drei obligatorischen OLE DB-Schemas:

  • DBSCHEMA_TABLES

  • DBSCHEMA_COLUMNS

  • DBSCHEMA_PROVIDER_TYPES

Der Assistent fügt außerdem drei entsprechende Einträge in der Schemazuordnung hinzu. Weitere Informationen zur Verwendung des Assistenten zum Erstellen eines Anbieters finden Sie unter Erstellen eines OLE DB-Vorlagenanbieters .

Siehe auch

OLE DB-Anbietervorlagen
Architektur von OLE DB-Anbietervorlagen
Erstellen eines OLE DB-Anbieters
Referenz der OLE DB-Anbietervorlagen
Makros für OLE DB-Anbietervorlagen