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_COLUMNS
et 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_TABLES
les ensembles de lignes de DBSCHEMA_COLUMNS
sché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 cRestrictions
s 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 cRestrictions
VARIANTqui 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