Partager via


IDBSchemaRowsetImpl (classe)

Fournit l’implémentation pour les ensembles de lignes de schéma.

Syntaxe

template <class SessionClass>
class ATL_NO_VTABLE IDBSchemaRowsetImpl : public IDBSchemaRowset

Paramètres

SessionClass
Classe par laquelle IDBSchemaRowsetImpl est hérité. En général, cette classe est la classe session de l’utilisateur.

Spécifications

En-tête : atldb.h

Membres

Méthodes

Nom Description
CheckRestrictions Vérifie la validité des restrictions par rapport à un ensemble de lignes de schéma.
CreateSchemaRowset Implémente une fonction du créateur d’objet COM pour l’objet spécifié par le paramètre de modèle.
SetRestrictions Spécifie les restrictions que vous prenez en charge sur un ensemble de lignes de schéma particulier.

Méthodes d'interface

Nom Description
GetRowset Retourne un ensemble de lignes de schéma.
GetSchemas Retourne une liste d’ensembles de lignes de schéma accessible par IDBSchemaRowsetImpl::GetRowset.

Notes

Cette classe implémente l’interface IDBSchemaRowset et la fonction de créateur mise en modèle CreateSchemaRowset.

OLE DB utilise les ensembles de lignes de schéma pour retourner des données à propos des données d’un fournisseur. Ces données sont souvent appelées « métadonnées ». Par défaut, un fournisseur doit toujours prendre en charge DBSCHEMA_TABLES, DBSCHEMA_COLUMNSet DBSCHEMA_PROVIDER_TYPES, comme décrit dans IDBSchemaRowset dans la référence du programmeur OLE DB. Les ensembles de lignes de schéma sont désignés dans un mappage de schéma. Pour plus d’informations sur les entrées de mappage de schéma, consultez SCHEMA_ENTRY.

L’Assistant Fournisseur OLE DB, dans l’Assistant Objet ATL, génère automatiquement le code pour les ensembles de lignes de schéma dans votre projet. (Par défaut, l’Assistant prend en charge les ensembles de lignes de schéma obligatoires mentionnés précédemment.) Lorsque vous créez un consommateur à l’aide de l’Assistant Objet ATL, l’Assistant utilise des ensembles de lignes de schéma pour lier les données appropriées à un fournisseur. Si vous n’implémentez pas vos ensembles de lignes de schéma pour fournir les métadonnées correctes, l’Assistant ne lie pas les bonnes données.

Pour plus d’informations sur la prise en charge des ensembles de lignes de schéma dans votre fournisseur, consultez Prise en charge des ensembles de lignes de schéma.

Pour plus d’informations sur les ensembles de lignes de schéma, consultez Ensembles de lignes de schéma dans les Informations de référence du programmeur OLE DB.

IDBSchemaRowsetImpl::CheckRestrictions

Vérifie la validité des restrictions par rapport à un ensemble de lignes de schéma.

Syntaxe

HRESULT CheckRestrictions(REFGUID rguidSchema,
   ULONG cRestrictions,  const VARIANT rgRestrictions[]);

Paramètres

rguidSchema
[in] Référence au GUID d’ensemble de lignes de schéma demandé (par exemple, DBSCHEMA_TABLES).

cRestrictions
[in] Nombre de restrictions passées par le consommateur pour l’ensemble de lignes de schéma.

rgRestrictions
[in] Tableau de longueur cRestrictions des valeurs de restriction à définir. Pour plus d’informations, consultez la description du paramètre rgRestrictions dans SetRestrictions.

Notes

Utilisez la méthode CheckRestrictions pour vérifier la validité des restrictions par rapport à un ensemble de lignes de schéma. Il vérifie les restrictions pour DBSCHEMA_TABLESles ensembles de lignes de DBSCHEMA_COLUMNSschéma et DBSCHEMA_PROVIDER_TYPES les ensembles de lignes de schéma. Appelez-le pour déterminer si l’appel d’un IDBSchemaRowset::GetRowset consommateur est correct. Si vous voulez prendre en charge d’autres ensembles de lignes de schéma que ceux répertoriés ci-dessus, vous devez créer votre propre fonction pour mener à bien cette tâche.

CheckRestrictions détermine si le consommateur appelle GetRowset avec la restriction correcte et le type de restriction correct (par exemple, un VT_BSTR pour une chaîne) pris en charge par le fournisseur. De même, elle détermine si le nombre correct de restrictions est pris en charge. Par défaut, CheckRestrictions demande au fournisseur, via l’appel SetRestrictions , quelles restrictions il prend en charge dans un ensemble de lignes donné. La méthode compare ensuite les restrictions du consommateur à celles que prend en charge le fournisseur avant d’aboutir ou d’échouer.

Pour plus d’informations sur les ensembles de lignes de schéma, consultez IDBSchemaRowset dans la référence du programmeur OLE DB dans le Kit de développement logiciel (SDK) Windows.

IDBSchemaRowsetImpl::CreateSchemaRowset

Implémente une fonction du créateur d’objet COM pour l’objet spécifié par le paramètre de modèle.

Syntaxe

template template <class SchemaRowsetClass>
HRESULT CreateSchemaRowset(IUnknown *pUnkOuter,
   ULONG cRestrictions,
   const VARIANT rgRestrictions[],
   REFIID riid,
   ULONG cPropertySets,
   DBPROPSET rgPropertySets[],
   IUnknown** ppRowset,
   SchemaRowsetClass*& pSchemaRowset);

Paramètres

pUnkOuter
[in] IUnknown externe lors de l’agrégation, sinon NULL.

cRestrictions
[in] Nombre de restrictions appliquées à l’ensemble de lignes du schéma.

rgRestrictions
[in] Tableau de cRestrictionss deà appliquer à l’ensemble de lignes.

riid
[in] Interface de QueryInterface pour la sortie IUnknown.

cPropertySets
[in] Nombre de sets de propriétés à définir.

rgPropertySets
[in] Tableau de structures DBPROPSET qui spécifient les propriétés définies.

ppRowset
[out] IUnknown Sortant demandé par riid. Il s’agit IUnknown d’une interface sur l’objet d’ensemble de lignes de schéma.

pSchemaRowset
[out] Pointeur vers une instance de la classe d’ensemble de lignes du schéma. Ce paramètre n’est généralement pas utilisé, mais il peut l’être si vous devez effectuer des tâches supplémentaires sur l’ensemble de lignes du schéma avant de le passer à un objet COM. La durée de vie de pSchemaRowset est liée par ppRowset.

Valeur de retour

Valeur HRESULT standard.

Notes

Cette fonction implémente un créateur générique pour tous les types d’ensembles de lignes du schéma. En règle générale, l’utilisateur n’appelle pas cette fonction. Elle est appelée par l’implémentation du mappage de schéma.

IDBSchemaRowsetImpl::SetRestrictions

Spécifie les restrictions que vous prenez en charge sur un ensemble de lignes de schéma particulier.

Syntaxe

void SetRestrictions(ULONG cRestrictions,
   GUID* /* rguidSchema */,
   ULONG* rgRestrictions);

Paramètres

cRestrictions
[in] Nombre de restrictions dans le tableau rgRestrictions et nombre de GUID dans le tableau rguidSchema .

rguidSchema
[in] Tableau des GUID des ensembles de lignes de schéma pour lesquels les restrictions doivent être récupérées. Chaque élément de tableau contient le GUID d’un ensemble de lignes de schéma (par exemple, DBSCHEMA_TABLES).

rgRestrictions
[in] Tableau de longueur cRestrictions des valeurs de restriction à définir. Chaque élément correspond aux restrictions de l’ensemble de lignes de schéma identifié par le GUID. Si un ensemble de lignes de schéma n’est pas pris en charge par le fournisseur, la valeur définie de l’élément est zéro. Dans le cas contraire, la valeur ULONG contient un masque de bits qui représente les restrictions prises en charge sur cet ensemble de lignes de schéma. Pour plus d’informations sur les restrictions qui correspondent à un ensemble de lignes de schéma particulier, consultez la table des GUID d’ensembles de lignes de schéma dans IDBSchemaRowset dans la référence du programmeur OLE DB dans le Kit de développement logiciel (SDK) Windows.

Notes

L’objet IDBSchemaRowset appelle SetRestrictions pour déterminer les restrictions que vous prenez en charge sur un ensemble de lignes de schéma particulier (il est appelé par GetSchemas via un pointeur upcasted). Les restrictions permettent aux consommateurs de récupérer uniquement les lignes correspondantes (par exemple, toutes les colonnes de la table « MaTable »). Les restrictions sont facultatives, et dans le cas où aucune n’est prise en charge (par défaut), toutes les données sont systématiquement retournées.

L’implémentation par défaut de cette méthode définit les éléments de tableau rgRestrictions sur 0. Remplacez la valeur par défaut dans votre classe session pour définir d’autres restrictions que celle par défaut.

Pour plus d’informations sur l’implémentation de la prise en charge des ensembles de lignes de schéma, consultez Prise en charge des ensembles de lignes de schéma.

Pour obtenir un exemple de fournisseur qui prend en charge les ensembles de lignes de schéma, consultez l’exemple UpdatePV .

Pour plus d’informations sur les ensembles de lignes de schéma, consultez IDBSchemaRowset dans la référence du programmeur OLE DB dans le Kit de développement logiciel (SDK) Windows.

IDBSchemaRowsetImpl::GetRowset

Retourne un ensemble de lignes de schéma.

Syntaxe

STDMETHOD (GetRowset)(IUnknown *pUnkOuter,
   REFGUID rguidSchema,
   ULONG cRestrictions,
   const VARIANT rgRestrictions[],
   REFIID riid,
   ULONG cPropertySets,
   DBPROPSET rgPropertySets[],
   IUnknown **ppRowset);

Paramètres

pUnkOuter
[in] Externe IUnknown lors de l’agrégation ; sinon NULL.

rguidSchema
[in] Référence au GUID d’ensemble de lignes de schéma demandé (par exemple, DBSCHEMA_TABLES).

cRestrictions
[in] Nombre de restrictions à appliquer à l’ensemble de lignes.

rgRestrictions
[in] Tableau d’objets cRestrictionsVARIANTqui représentent les restrictions.

riid
[in] IID associé à la demande portant sur l’ensemble de lignes de schéma nouvellement créé.

cPropertySets
[in] Nombre de sets de propriétés à définir.

rgPropertySets
[in/out] Tableau de structures DBPROPSET à définir sur l’ensemble de lignes de schéma nouvellement créé.

ppRowset
[out] Pointeur désignant l’interface demandée sur l’ensemble de lignes de schéma nouvellement créé.

Notes

Cette méthode impose à l’utilisateur de disposer d’un mappage de schéma dans la classe session. À l’aide des informations de mappage de schéma, GetRowset crée un objet d’ensemble de lignes donné si le paramètre rguidSchema est égal à l’un des GUID d’entrées de carte. Consultez SCHEMA_ENTRY pour obtenir une description de l’entrée de mappage.

Consultez IDBSchemaRowset ::GetRowset dans le Kit de développement logiciel (SDK) Windows.

IDBSchemaRowsetImpl::GetSchemas

Retourne une liste d’ensembles de lignes de schéma accessible par IDBSchemaRowsetImpl::GetRowset.

Syntaxe

STDMETHOD (GetSchema s )(ULONG * pcSchemas,
   GUID ** prgSchemas,
   ULONG** prgRest);

Paramètres

pcSchemas
[out] Pointeur désignant un ULONG complété du nombre de schémas.

prgSchemas
[out] Pointeur désignant un tableau de GUID complété d’un pointeur désignant un tableau de GUID d’ensembles de lignes de schéma.

prgRest
[out] Pointeur désignant un tableau de ULONGqui doit être complété du tableau de restrictions.

Notes

Cette méthode retourne un tableau de tous les ensembles de lignes de schéma pris en charge par le fournisseur. Consultez IDBSchemaRowset ::GetSchemas dans le Kit de développement logiciel (SDK) Windows.

L’implémentation de cette fonction impose à l’utilisateur de disposer d’un mappage de schéma dans la classe session. À partir des informations de mappage de schéma, elle répond ensuite avec le tableau de GUID des schémas contenus dans le mappage. Il s’agit des schémas pris en charge par le fournisseur.

Voir aussi

Classes de jeu de lignes du schéma et classes Typedef
Prise en charge des ensembles de lignes de schéma
SCHEMA_ENTRY
UpdatePV