Condividi tramite


Macro per i modelli di provider OLE DB

Le macro provider di modelli OLE DB offrono funzionalità nelle categorie seguenti:

Macro mappa set di proprietà

Nome Descrizione
BEGIN_PROPERTY_SET Contrassegna l'inizio di un set di proprietà.
BEGIN_PROPERTY_SET_EX Contrassegna l'inizio di un set di proprietà.
BEGIN_PROPSET_MAP Contrassegna l'inizio di un set di proprietà che può essere nascosto o definito all'esterno dell'ambito del provider.
CHAIN_PROPERTY_SET Concatena i gruppi di proprietà.
END_PROPERTY_SET Contrassegna la fine di un set di proprietà.
END_PROPSET_MAP Contrassegna la fine di una mappa del set di proprietà.
PROPERTY_INFO_ENTRY Imposta una proprietà specifica in una proprietà impostata su un valore predefinito.
PROPERTY_INFO_ENTRY_EX Imposta una proprietà specifica in una proprietà impostata su un valore fornito dall'utente. Consente inoltre di impostare flag e opzioni.
PROPERTY_INFO_ENTRY_VALUE Imposta una proprietà specifica in una proprietà impostata su un valore fornito dall'utente.

Macro mappa colonne

Nome Descrizione
BEGIN_PROVIDER_COLUMN_MAP Contrassegna l'inizio delle voci della mappa delle colonne del provider.
END_PROVIDER_COLUMN_MAP Contrassegna la fine delle voci della mappa delle colonne del provider.
PROVIDER_COLUMN_ENTRY Rappresenta una colonna specifica supportata dal provider.
PROVIDER_COLUMN_ENTRY_FIXED Rappresenta una colonna specifica supportata dal provider. È possibile specificare il tipo di dati della colonna.
PROVIDER_COLUMN_ENTRY_GN Rappresenta una colonna specifica supportata dal provider. È possibile specificare il GUID delle dimensioni, del tipo di dati, della precisione, della scala e del set di righe dello schema.
PROVIDER_COLUMN_ENTRY_LENGTH Rappresenta una colonna specifica supportata dal provider. È possibile specificare le dimensioni della colonna.
PROVIDER_COLUMN_ENTRY_STR Rappresenta una colonna specifica supportata dal provider. Si presuppone che il tipo di colonna sia una stringa.
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH Rappresenta una colonna specifica supportata dal provider. Come PROVIDER_COLUMN_ENTRY_LENGTH, ma consente anche di specificare il tipo di dati della colonna e le dimensioni.
PROVIDER_COLUMN_ENTRY_WSTR Rappresenta una colonna specifica supportata dal provider. Presuppone che il tipo di colonna sia una stringa di caratteri Unicode.

Macro del set di righe dello schema

Nome Descrizione
BEGIN_SCHEMA_MAP Contrassegna l'inizio di una mappa dello schema.
END_SCHEMA_MAP Contrassegna la fine di una mappa dello schema.
SCHEMA_ENTRY Associa un GUID a una classe.

Requisiti

Intestazione: atldb.h

BEGIN_PROPERTY_SET

Contrassegna l'inizio di un set di proprietà in una mappa del set di proprietà.

Sintassi

BEGIN_PROPERTY_SET(guid)

Parametri

guid
[in] GUID della proprietà.

Esempio

Vedere BEGIN_PROPSET_MAP.

BEGIN_PROPERTY_SET_EX

Contrassegna l'inizio di un set di proprietà in una mappa del set di proprietà.

Sintassi

BEGIN_PROPERTY_SET_EX(guid, flags)

Parametri

guid
[in] GUID della proprietà.

flags
[in] UPROPSET_HIDDEN per qualsiasi set di proprietà che non si desidera esporre o UPROPSET_PASSTHROUGH per un provider che espone proprietà definite all'esterno dell'ambito del provider.

Esempio

Vedere BEGIN_PROPSET_MAP.

BEGIN_PROPSET_MAP

Contrassegna l'inizio delle voci della mappa impostate dalla proprietà.

Sintassi

BEGIN_PROPSET_MAP(Class)

Parametri

Classe
[in] Classe in cui è specificato questo set di proprietà. È possibile specificare un set di proprietà negli oggetti OLE DB seguenti:

Esempio

Ecco una mappa del set di proprietà di esempio:

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

Questa macro concatena i gruppi di proprietà.

Sintassi

CHAIN_PROPERTY_SET(ChainClass)

Parametri

ChainClass
[in] Nome della classe per cui concatenare le proprietà. Si tratta di una classe generata dalla Creazione guidata progetto ATL che contiene già una mappa, ad esempio una sessione, un comando o una classe oggetto origine dati.

Osservazioni:

È possibile concatenare un set di proprietà da un'altra classe alla classe, quindi accedere alle proprietà direttamente dalla classe.

Attenzione

Utilizzare questa macro con moderazione. L'uso improprio può causare l'esito negativo dei test di conformità OLE DB da parte di un consumer.

END_PROPERTY_SET

Contrassegna la fine di un set di proprietà.

Sintassi

END_PROPERTY_SET(guid)

Parametri

guid
[in] GUID della proprietà.

Esempio

Vedere BEGIN_PROPSET_MAP.

END_PROPSET_MAP

Contrassegna la fine delle voci della mappa del set di proprietà.

Sintassi

END_PROPSET_MAP()

Esempio

Vedere BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY

Rappresenta una proprietà specifica in un insieme di proprietà.

Sintassi

PROPERTY_INFO_ENTRY(dwPropID)

Parametri

dwPropID
[in] Un valore DBPROPID che può essere usato unitamente all'insieme di proprietà GUID per identificare una proprietà.

Osservazioni:

La macro imposta il valore della proprietà di tipo DWORD su un valore predefinito definito in ATLDB. H. Per impostare la proprietà su un valore di propria scelta, usare PROPERTY_INFO_ENTRY_VALUE. Per impostare VARTYPE e DBPROPFLAGS per la proprietà contemporaneamente, utilizzare PROPERTY_INFO_ENTRY_EX.

Esempio

Vedere BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY_EX

Rappresenta una proprietà specifica in un insieme di proprietà.

Sintassi

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

Parametri

dwPropID
[in] Un valore DBPROPID che può essere usato unitamente all'insieme di proprietà GUID per identificare una proprietà.

vt
[in] Il VARTYPE di questa voce di proprietà. (Definito in wtypes.h)

dwFlags
[in] Un valore DBPROPFLAGS che descrive la voce di proprietà.

value
[in] Il valore della proprietà di tipo DWORD.

options
DBPROPOPTIONS_REQUIRED o DBPROPOPTIONS_SETIFCHEAP. In genere, un provider non deve impostare le opzioni perché è impostato dal consumer.

Osservazioni:

Con questa macro è possibile specificare direttamente il valore della proprietà di tipo DWORD nonché le opzioni e i flag. Per impostare semplicemente una proprietà sul valore predefinito indicato in ATLDB.H, usare PROPERTY_INFO_ENTRY. Per impostare una proprietà su un valore a scelta, senza impostare opzioni o flag, usare PROPERTY_INFO_ENTRY_VALUE.

Esempio

Vedere BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY_VALUE

Rappresenta una proprietà specifica in un insieme di proprietà.

Sintassi

PROPERTY_INFO_ENTRY_VALUE(dwPropID, value)

Parametri

dwPropID
[in] Un valore DBPROPID che può essere usato unitamente all'insieme di proprietà GUID per identificare una proprietà.

value
[in] Il valore della proprietà di tipo DWORD.

Osservazioni:

Con questa macro è possibile specificare direttamente il valore della proprietà di tipo DWORD. Per impostare la proprietà sul valore predefinito definito in ATLDB. H, usare PROPERTY_INFO_ENTRY. Per impostare il valore, i flag e le opzioni per la proprietà, utilizzare PROPERTY_INFO_ENTRY_EX.

Esempio

Vedere BEGIN_PROPSET_MAP.

BEGIN_PROVIDER_COLUMN_MAP

Contrassegna l'inizio delle voci della mappa delle colonne del provider.

Sintassi

BEGIN_PROVIDER_COLUMN_MAP(theClass)

Parametri

theClass
[in] Nome della classe a cui appartiene questa mappa.

Esempio

Ecco una mappa delle colonne del provider di esempio:

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

Contrassegna la fine delle voci della mappa delle colonne del provider.

Sintassi

END_PROVIDER_COLUMN_MAP()

Esempio

Vedere BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY

Rappresenta una colonna specifica supportata dal provider.

Sintassi

PROVIDER_COLUMN_ENTRY (name, ordinal, member)

Parametri

name
[in] Nome della colonna.

Ordinale
[in] Numero di colonna. A meno che la colonna non sia una colonna Bookmark, il numero di colonna non deve essere 0.

membro
[in] Variabile membro in dataClass corrispondente alla colonna.

PROVIDER_COLUMN_ENTRY_FIXED

Rappresenta una colonna specifica supportata dal provider.

Sintassi

PROVIDER_COLUMN_ENTRY_FIXED(name, ordinal, dbtype, member)

Parametri

name
[in] Nome della colonna.

Ordinale
[in] Numero di colonna. A meno che la colonna non sia una colonna Bookmark, il numero di colonna non deve essere 0.

dbtype
[in] Tipo di dati in DBTYPE.

membro
[in] Variabile membro in dataClass che archivia i dati.

Osservazioni:

Consente di specificare il tipo di dati della colonna.

Esempio

Vedere BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_GN

Rappresenta una colonna specifica supportata dal provider.

Sintassi

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

Parametri

name
[in] Nome della colonna.

Ordinale
[in] Numero di colonna. A meno che la colonna non sia una colonna Bookmark, il numero di colonna non deve essere 0.

flags
[in] Specifica la modalità di restituzione dei dati. Vedere la dwFlags descrizione in Strutture DBBINDING.

colSize
[in] Dimensioni della colonna.

dbtype
[in] Indica il tipo di dati del valore. Vedere la wType descrizione in Strutture DBBINDING.

precision
[in] Indica la precisione da usare quando si recuperano dati se dbType è DBTYPE_NUMERIC o DBTYPE_DECIMAL. Vedere la bPrecision descrizione in Strutture DBBINDING.

scale
[in] Indica la scala da usare quando si recuperano dati se dbType è DBTYPE_NUMERIC o DBTYPE_DECIMAL. Vedere la bScale descrizione in Strutture DBBINDING.

guid
GUID del set di righe dello schema. Vedere IDBSchemaRowset nella guida di riferimento per programmatori OLE DB per un elenco di set di righe dello schema e relativi GUID.

Osservazioni:

Consente di specificare il GUID delle dimensioni, del tipo di dati, della precisione, della scala e del set di righe dello schema.

PROVIDER_COLUMN_ENTRY_LENGTH

Rappresenta una colonna specifica supportata dal provider.

Sintassi

PROVIDER_COLUMN_ENTRY_LENGTH(name, ordinal, size, member)

Parametri

name
[in] Nome della colonna.

Ordinale
[in] Numero di colonna. A meno che la colonna non sia una colonna Bookmark, il numero di colonna non deve essere 0.

size
[in] Dimensioni della colonna in byte.

membro
[in] Variabile membro in dataClass che archivia i dati della colonna.

Osservazioni:

Consente di specificare le dimensioni della colonna.

Esempio

Vedere BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_STR

Rappresenta una colonna specifica supportata dal provider.

Sintassi

PROVIDER_COLUMN_ENTRY_STR(name, ordinal, member)

Parametri

name
[in] Nome della colonna.

Ordinale
[in] Numero di colonna. A meno che la colonna non sia una colonna Bookmark, il numero di colonna non deve essere 0.

membro
[in] Variabile membro nella classe di dati che archivia i dati.

Osservazioni:

Utilizzare questa macro quando si presuppone che i dati della colonna siano DBTYPE_STR.

Esempio

Vedere BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_TYPE_LENGTH

Rappresenta una colonna specifica supportata dal provider.

Sintassi

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

Parametri

name
[in] Nome della colonna.

Ordinale
[in] Numero di colonna. A meno che la colonna non sia una colonna Bookmark, il numero di colonna non deve essere 0.

dbtype
[in] Tipo di dati in DBTYPE.

size
[in] Dimensioni della colonna in byte.

membro
[in] Variabile membro nella classe di dati che archivia i dati.

Osservazioni:

Analogamente a PROVIDER_COLUMN_ENTRY_LENGTH , ma consente anche di specificare il tipo di dati della colonna e le dimensioni.

PROVIDER_COLUMN_ENTRY_WSTR

Rappresenta una colonna specifica supportata dal provider.

Sintassi

PROVIDER_COLUMN_ENTRY_WSTR(name, ordinal, member)

Parametri

name
[in] Nome della colonna.

Ordinale
[in] Numero di colonna. A meno che la colonna non sia una colonna Bookmark, il numero di colonna non deve essere 0.

membro
[in] Variabile membro nella classe di dati che archivia i dati.

Osservazioni:

Utilizzare questa macro quando i dati della colonna sono una stringa di caratteri Unicode con terminazione Null, DBTYPE_WSTR.

BEGIN_SCHEMA_MAP

Indica l'inizio di una mappa dello schema.

Sintassi

BEGIN_SCHEMA_MAP(SchemaClass);

Parametri

SchemaClass
Classe che contiene l'oggetto MAP. In genere si tratta della classe di sessione.

Osservazioni:

Per altre informazioni sui set di righe dello schema, vedere IDBSchemaRowset in Windows SDK.

END_SCHEMA_MAP

Indica la fine della mappa dello schema.

Sintassi

END_SCHEMA_MAP()

Osservazioni:

Per altre informazioni, vedere Classe IDBSchemaRowsetImpl.

SCHEMA_ENTRY

Associa un GUID a una classe.

Sintassi

SCHEMA_ENTRY(guid,
   rowsetClass);

Parametri

guid
GUID del set di righe dello schema. Vedere IDBSchemaRowset nella guida di riferimento per programmatori OLE DB per un elenco di set di righe dello schema e relativi GUID.

rowsetClass
Classe che verrà creata per rappresentare il set di righe dello schema.

Osservazioni:

IDBSchemaRowsetImpl può quindi eseguire una query sulla mappa per un elenco di GUID oppure creare un set di righe se viene assegnato un GUID. Il set IDBSchemaRowsetImpl di righe dello schema creato è simile a una classe derivata dallo standard CRowsetImpl, ma deve fornire un Execute metodo con la firma seguente:

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

Questa Execute funzione popola i dati del set di righe. La Creazione guidata progetto ATL, come descritto in IDBSchemaRowset nel riferimento del programmatore OLE DB, tre set di righe dello schema iniziali nel progetto per ognuno dei tre schemi OLE DB obbligatori:

  • DBSCHEMA_TABLES

  • DBSCHEMA_COLUMNS

  • DBSCHEMA_PROVIDER_TYPES

La procedura guidata aggiunge anche tre voci corrispondenti nella mappa dello schema. Per altre informazioni sull'uso della procedura guidata per creare un provider, vedere Creazione di un provider OLE DB.

Vedi anche

Modelli di provider OLE DB
Architettura dei modelli di provider OLE DB
Creazione di un provider OLE DB
Riferimenti ai modelli del provider OLE DB
Macro per i modelli di provider OLE DB