Accesseurs et jeux de lignes
Mise à jour : novembre 2007
Pour définir et récupérer des données, les modèles OLE DB utilisent un accesseur et un jeu de lignes au moyen de la classe CAccessorRowset. Cette classe peut gérer plusieurs accesseurs de différents types.
Types d'accesseurs
Tous les accesseurs dérivent de CAccessorBase. CAccessorBase assure la liaison à la fois des paramètres et des colonnes.
L'illustration suivante représente les types d'accesseurs.
Classes d'accesseurs
CAccessor Utilisez cette classe d'accesseur lorsque vous connaissez la structure de la source de la base de données au moment du design. CAccessor lie statiquement un enregistrement de la base de données, qui contient la mémoire tampon, à la source de données.
CDynamicAccessorUtilisez cette classe d'accesseur quand vous ignorez la structure de la source de la base de données au moment du design. CDynamicAccessor appelle IColumnsInfo::GetColumnInfo pour obtenir les informations relatives aux colonnes de la base de données. Elle crée et gère un accesseur et la mémoire tampon.
CDynamicParameterAccessor Utilisez cette classe d'accesseur pour gérer des types de commandes inconnus. Lorsque vous préparez les commandes, CDynamicParameterAccessor peut obtenir les informations sur les paramètres à partir de l'interface ICommandWithParameters, si le fournisseur prend en charge ICommandWithParameters.
CDynamicStringAccessor, CDynamicStringAccessorAet CDynamicStringAccessorW Utilisez ces classes lorsque vous ignorez tout du schéma de la base de données. CDynamicStringAccessorA récupère des données en tant que chaînes ANSI ; CDynamicStringAccessorW récupère les données en tant que chaînes Unicode.
CManualAccessor Avec cette classe, vous pouvez utiliser les types de données de votre choix, à condition que le fournisseur puisse convertir le type choisi. Elle gère à la fois les colonnes résultantes et les paramètres des commandes.
Le tableau suivant récapitule la prise en charge dans les types d'accesseurs des modèles OLE DB.
Type d'accesseur |
Dynamique |
Gère les paramètres |
Mémoire tampon |
Plusieurs accesseurs |
---|---|---|---|---|
CAccessor |
Non |
Oui |
Utilisateur |
Oui |
CDynamicAccessor |
Oui |
Non |
Modèles OLE DB |
Non |
CDynamicParameterAccessor |
Oui |
Oui |
Modèles OLE DB |
Non |
CDynamicStringAccessor[A,W] |
Oui |
Non |
Modèles OLE DB |
Non |
CManualAccessor |
Oui |
Oui |
Utilisateur |
Oui |
Types de jeux de lignes
Les modèles OLE DB prennent en charge trois sortes de jeux de lignes (consultez l'illustration précédente) : des jeux de lignes simples (implémentés par CRowset), des jeux de lignes en bloc (implémentés par CBulkRowset) et des jeux de lignes de type tableau (implémentés par CArrayRowset). Les jeux de lignes simples extraient un handle de ligne simple lors d'un appel de MoveNext. Les jeux de lignes en bloc peuvent extraire plusieurs handles de ligne. Les jeux de lignes de type tableau sont des jeux de lignes qui sont accessibles à l'aide d'une syntaxe de tableau.
L'illustration suivante représente les différents types de jeux de lignes.
Classes de jeu de lignes
Les jeux de lignes du schéma n'accèdent pas aux données qui se trouvent dans le magasin de données ; ils accèdent plutôt aux informations relatives au magasin de données, appelées métadonnées. Les jeux de lignes du schéma sont généralement utilisés dans les situations où la structure de la base de données n'est pas connue au moment de la compilation, et doit être obtenue à ce moment-là.