Partager via


Macros pour les modèles du fournisseur OLE DB

Les macros du fournisseur de modèles OLE DB offrent des fonctionnalités dans les catégories suivantes :

Macros de mappage des ensembles de propriétés

Nom Description
BEGIN_PROPERTY_SET Marque le début d’un jeu de propriétés.
BEGIN_PROPERTY_SET_EX Marque le début d’un jeu de propriétés.
BEGIN_PROPSET_MAP Marque le début d’un jeu de propriétés qui peut être masqué ou défini en dehors de l’étendue du fournisseur.
CHAIN_PROPERTY_SET Regroupe les groupes de propriétés.
END_PROPERTY_SET Marque la fin d’un jeu de propriétés.
END_PROPSET_MAP Marque la fin d’un mappage de jeu de propriétés.
PROPERTY_INFO_ENTRY Définit une propriété spécifique dans une propriété définie sur une valeur par défaut.
PROPERTY_INFO_ENTRY_EX Définit une propriété spécifique dans une propriété définie sur une valeur fournie par vous. Vous permet également de définir des indicateurs et des options.
PROPERTY_INFO_ENTRY_VALUE Définit une propriété spécifique dans une propriété définie sur une valeur fournie par vous.

Macros de carte de colonnes

Nom Description
BEGIN_PROVIDER_COLUMN_MAP Marque le début des entrées de mappage de colonnes du fournisseur.
END_PROVIDER_COLUMN_MAP Marque la fin des entrées de mappage de colonnes du fournisseur.
PROVIDER_COLUMN_ENTRY Représente une colonne spécifique prise en charge par le fournisseur.
PROVIDER_COLUMN_ENTRY_FIXED Représente une colonne spécifique prise en charge par le fournisseur. Vous pouvez spécifier le type de données de colonne.
PROVIDER_COLUMN_ENTRY_GN Représente une colonne spécifique prise en charge par le fournisseur. Vous pouvez spécifier la taille, le type de données, la précision, l’échelle et le GUID d’ensemble de lignes de schéma de la colonne.
PROVIDER_COLUMN_ENTRY_LENGTH Représente une colonne spécifique prise en charge par le fournisseur. Vous pouvez spécifier la taille de colonne.
PROVIDER_COLUMN_ENTRY_STR Représente une colonne spécifique prise en charge par le fournisseur. Il suppose que le type de colonne est une chaîne.
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH Représente une colonne spécifique prise en charge par le fournisseur. Comme PROVIDER_COLUMN_ENTRY_LENGTH, mais vous permet également de spécifier le type de données de la colonne ainsi que la taille.
PROVIDER_COLUMN_ENTRY_WSTR Représente une colonne spécifique prise en charge par le fournisseur. Il part du principe que le type de colonne est une chaîne de caractères Unicode.

Macros d’ensemble de lignes de schéma

Nom Description
BEGIN_SCHEMA_MAP Marque le début d’une carte de schéma.
END_SCHEMA_MAP Marque la fin d’une carte de schéma.
SCHEMA_ENTRY Associe un GUID à une classe.

Spécifications

En-tête : atldb.h

BEGIN_PROPERTY_SET

Marque le début d’un jeu de propriétés dans un mappage de jeu de propriétés.

Syntaxe

BEGIN_PROPERTY_SET(guid)

Paramètres

guid
[in] GUID de propriété.

Exemple

Voir BEGIN_PROPSET_MAP.

BEGIN_PROPERTY_SET_EX

Marque le début d’un jeu de propriétés dans un mappage de jeu de propriétés.

Syntaxe

BEGIN_PROPERTY_SET_EX(guid, flags)

Paramètres

guid
[in] GUID de propriété.

flags
[in] UPROPSET_HIDDEN pour les ensembles de propriétés que vous ne souhaitez pas exposer, ni UPROPSET_PASSTHROUGH pour un fournisseur exposant des propriétés définies en dehors de l’étendue du fournisseur.

Exemple

Voir BEGIN_PROPSET_MAP.

BEGIN_PROPSET_MAP

Marque le début des entrées de mappage du jeu de propriétés.

Syntaxe

BEGIN_PROPSET_MAP(Class)

Paramètres

Classe
[in] Classe dans laquelle ce jeu de propriétés est spécifié. Un jeu de propriétés peut être spécifié dans les objets OLE DB suivants :

Exemple

Voici un exemple de mappage de jeu de propriétés :

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

Cette macro regroupe des groupes de propriétés.

Syntaxe

CHAIN_PROPERTY_SET(ChainClass)

Paramètres

ChainClass
[in] Nom de la classe pour laquelle chaîner les propriétés. Il s’agit d’une classe générée par l’Assistant Projet ATL qui contient déjà une carte (par exemple, une session, une commande ou une classe d’objet source de données).

Notes

Vous pouvez chaîner un jeu de propriétés d’une autre classe à votre propre classe, puis accéder aux propriétés directement à partir de votre classe.

Attention

Utilisez cette macro de manière éparse. Une utilisation incorrecte peut entraîner l’échec des tests de conformité OLE DB par un consommateur.

END_PROPERTY_SET

Marque la fin d’un jeu de propriétés.

Syntaxe

END_PROPERTY_SET(guid)

Paramètres

guid
[in] GUID de propriété.

Exemple

Voir BEGIN_PROPSET_MAP.

END_PROPSET_MAP

Marque la fin des entrées de mappage du jeu de propriétés.

Syntaxe

END_PROPSET_MAP()

Exemple

Voir BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY

Représente une propriété spécifique dans un jeu de propriétés.

Syntaxe

PROPERTY_INFO_ENTRY(dwPropID)

Paramètres

dwPropID
[in] Valeur DBPROPID qui peut être utilisée en combinaison avec le GUID du jeu de propriétés pour identifier une propriété.

Notes

Cette macro attribue à la propriété de type DWORD une valeur par défaut définie dans ATLDB.H. Pour attribuer à la propriété une valeur de votre choix, utilisez PROPERTY_INFO_ENTRY_VALUE. Pour définir la VARTYPE propriété et DBPROPFLAGS en même temps, utilisez PROPERTY_INFO_ENTRY_EX.

Exemple

Voir BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY_EX

Représente une propriété spécifique dans un jeu de propriétés.

Syntaxe

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

Paramètres

dwPropID
[in] Valeur DBPROPID qui peut être utilisée en combinaison avec le GUID du jeu de propriétés pour identifier une propriété.

vt
[in] VARTYPE de cette entrée de propriété. (Défini dans wtypes.h)

dwFlags
[in] Valeur DBPROPFLAGS décrivant cette entrée de propriété.

valeur
[in] Valeur de propriété de type DWORD.

options
DBPROPOPTIONS_REQUIRED ou DBPROPOPTIONS_SETIFCHEAP. Normalement, un fournisseur n’a pas besoin de définir des options , car il est défini par le consommateur.

Notes

Avec cette macro, vous pouvez spécifier directement la valeur de propriété de type DWORD , ainsi que les options et les indicateurs. Pour affecter simplement à une propriété une valeur par défaut définie dans ATLDB.H, utilisez PROPERTY_INFO_ENTRY. Pour affecter à une propriété une valeur de votre choix, sans définir aucune option ou indicateur, utilisez PROPERTY_INFO_ENTRY_VALUE.

Exemple

Voir BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY_VALUE

Représente une propriété spécifique dans un jeu de propriétés.

Syntaxe

PROPERTY_INFO_ENTRY_VALUE(dwPropID, value)

Paramètres

dwPropID
[in] Valeur DBPROPID qui peut être utilisée en combinaison avec le GUID du jeu de propriétés pour identifier une propriété.

valeur
[in] Valeur de propriété de type DWORD.

Notes

Avec cette macro, vous pouvez spécifier directement la valeur de propriété de type DWORD. Pour définir la propriété sur la valeur par défaut définie dans ATLDB. H, utilisez PROPERTY_INFO_ENTRY. Pour définir la valeur, les indicateurs et les options de la propriété, utilisez PROPERTY_INFO_ENTRY_EX.

Exemple

Voir BEGIN_PROPSET_MAP.

BEGIN_PROVIDER_COLUMN_MAP

Marque le début des entrées de mappage de colonnes du fournisseur.

Syntaxe

BEGIN_PROVIDER_COLUMN_MAP(theClass)

Paramètres

theClass
[in] Nom de la classe à laquelle appartient cette carte.

Exemple

Voici un exemple de mappage de colonnes de fournisseur :

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

Marque la fin des entrées de mappage de colonnes du fournisseur.

Syntaxe

END_PROVIDER_COLUMN_MAP()

Exemple

Voir BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY

Représente une colonne spécifique prise en charge par le fournisseur.

Syntaxe

PROVIDER_COLUMN_ENTRY (name, ordinal, member)

Paramètres

nom
[in] Nom de la colonne.

ordinal
[in] Numéro de colonne. Sauf si la colonne est une colonne Signet, le numéro de colonne ne doit pas être 0.

member
[in] Variable dataClass membre correspondant à la colonne.

PROVIDER_COLUMN_ENTRY_FIXED

Représente une colonne spécifique prise en charge par le fournisseur.

Syntaxe

PROVIDER_COLUMN_ENTRY_FIXED(name, ordinal, dbtype, member)

Paramètres

nom
[in] Nom de la colonne.

ordinal
[in] Numéro de colonne. Sauf si la colonne est une colonne Signet, le numéro de colonne ne doit pas être 0.

dbtype
[in] Type de données dans DBTYPE.

member
[in] Variable membre dans dataClass laquelle les données sont stockées.

Notes

Vous permet de spécifier le type de données de colonne.

Exemple

Voir BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_GN

Représente une colonne spécifique prise en charge par le fournisseur.

Syntaxe

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

Paramètres

nom
[in] Nom de la colonne.

ordinal
[in] Numéro de colonne. Sauf si la colonne est une colonne Signet, le numéro de colonne ne doit pas être 0.

flags
[in] Spécifie la façon dont les données sont retournées. Consultez la dwFlags description des structures DBBINDING.

colSize
[in] Taille de colonne.

dbtype
[in] Indique le type de données de la valeur. Consultez la wType description des structures DBBINDING.

precision
[in] Indique la précision à utiliser lors de l’obtention de données si dbType est DBTYPE_NUMERIC ou DBTYPE_DECIMAL. Consultez la bPrecision description des structures DBBINDING.

scale
[in] Indique la mise à l’échelle à utiliser lors de l’obtention de données si dbType est DBTYPE_NUMERIC ou DBTYPE_DECIMAL. Consultez la bScale description des structures DBBINDING.

guid
GUID d’ensemble de lignes de schéma. Consultez IDBSchemaRowset dans la référence du programmeur OLE DB pour obtenir la liste des ensembles de lignes de schéma et leurs GUID.

Notes

Vous permet de spécifier la taille, le type de données, la précision, l’échelle et le GUID d’ensemble de lignes de schéma de la colonne.

PROVIDER_COLUMN_ENTRY_LENGTH

Représente une colonne spécifique prise en charge par le fournisseur.

Syntaxe

PROVIDER_COLUMN_ENTRY_LENGTH(name, ordinal, size, member)

Paramètres

nom
[in] Nom de la colonne.

ordinal
[in] Numéro de colonne. Sauf si la colonne est une colonne Signet, le numéro de colonne ne doit pas être 0.

size
[in] Taille de colonne en octets.

member
[in] Variable membre dans dataClass laquelle les données de colonne sont stockées.

Notes

Vous permet de spécifier la taille de colonne.

Exemple

Voir BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_STR

Représente une colonne spécifique prise en charge par le fournisseur.

Syntaxe

PROVIDER_COLUMN_ENTRY_STR(name, ordinal, member)

Paramètres

nom
[in] Nom de la colonne.

ordinal
[in] Numéro de colonne. Sauf si la colonne est une colonne Signet, le numéro de colonne ne doit pas être 0.

member
[in] Variable membre dans la classe de données qui stocke les données.

Notes

Utilisez cette macro lorsque les données de colonne sont supposées être DBTYPE_STR.

Exemple

Voir BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_TYPE_LENGTH

Représente une colonne spécifique prise en charge par le fournisseur.

Syntaxe

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

Paramètres

nom
[in] Nom de la colonne.

ordinal
[in] Numéro de colonne. Sauf si la colonne est une colonne Signet, le numéro de colonne ne doit pas être 0.

dbtype
[in] Type de données dans DBTYPE.

size
[in] Taille de colonne en octets.

member
[in] Variable membre dans la classe de données qui stocke les données.

Notes

Similaire à PROVIDER_COLUMN_ENTRY_LENGTH , mais vous permet également de spécifier le type de données de la colonne ainsi que la taille.

PROVIDER_COLUMN_ENTRY_WSTR

Représente une colonne spécifique prise en charge par le fournisseur.

Syntaxe

PROVIDER_COLUMN_ENTRY_WSTR(name, ordinal, member)

Paramètres

nom
[in] Nom de la colonne.

ordinal
[in] Numéro de colonne. Sauf si la colonne est une colonne Signet, le numéro de colonne ne doit pas être 0.

member
[in] Variable membre dans la classe de données qui stocke les données.

Notes

Utilisez cette macro lorsque les données de colonne sont une chaîne de caractères Unicode terminée par null, DBTYPE_WSTR.

BEGIN_SCHEMA_MAP

Indique le début d’une carte de schéma.

Syntaxe

BEGIN_SCHEMA_MAP(SchemaClass);

Paramètres

SchemaClass
Classe qui contient map. En règle générale, il s’agit de la classe de session.

Notes

Pour plus d’informations sur les ensembles de lignes de schéma, consultez IDBSchemaRowset dans le Kit de développement logiciel (SDK) Windows.

END_SCHEMA_MAP

Indique la fin de la carte de schéma.

Syntaxe

END_SCHEMA_MAP()

Notes

Pour plus d’informations, consultez IDBSchemaRowsetImpl, classe.

SCHEMA_ENTRY

Associe un GUID à une classe.

Syntaxe

SCHEMA_ENTRY(guid,
   rowsetClass);

Paramètres

guid
GUID d’ensemble de lignes de schéma. Consultez IDBSchemaRowset dans la référence du programmeur OLE DB pour obtenir la liste des ensembles de lignes de schéma et leurs GUID.

rowsetClass
Classe qui sera créée pour représenter l’ensemble de lignes de schéma.

Notes

IDBSchemaRowsetImpl peut ensuite interroger la carte pour obtenir une liste de GUID, ou créer un ensemble de lignes s’il reçoit un GUID. L’ensemble IDBSchemaRowsetImpl de lignes de schéma créé est similaire à une CRowsetImplclasse dérivée standard, sauf qu’il doit fournir une Execute méthode qui a la signature suivante :

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

Cette Execute fonction remplit les données de l’ensemble de lignes. L’Assistant Projet ATL crée, comme décrit dans IDBSchemaRowset dans la référence du programmeur OLE DB, trois ensembles de lignes de schéma initial dans le projet pour chacun des trois schémas OLE DB obligatoires :

  • DBSCHEMA_TABLES

  • DBSCHEMA_COLUMNS

  • DBSCHEMA_PROVIDER_TYPES

L’Assistant ajoute également trois entrées correspondantes dans le mappage de schéma. Pour plus d’informations sur l’utilisation de l’Assistant pour créer un fournisseur, consultez Création d’un fournisseur OLE DB.

Voir aussi

Modèles du fournisseur OLE DB
Architecture des modèles du fournisseur OLE DB
Création d’un fournisseur OLE DB
Référence des modèles du fournisseur OLE DB
Macros pour les modèles du fournisseur OLE DB