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