Accesseurs et jeux de lignes
Pour définir et récupérer des données, les modèles OLE DB utilisent un accesseur et un ensemble de lignes via la classe CAccessorRowset . Cette classe peut gérer plusieurs accesseurs de différents types.
Types d’accesseur
Tous les accesseurs dérivent de CAccessorBase. CAccessorBase
fournit à la fois la liaison de paramètre et de colonne.
La figure suivante montre les types d’accesseur.
Classes d’accesseur
CAccessor Utilisez cet accesseur lorsque vous connaissez la structure de la source de base de données au moment du design.
CAccessor
lie statiquement un enregistrement de base de données, qui contient la mémoire tampon, à la source de données.CDynamicAccessor Utilisez cet accesseur lorsque vous ne connaissez pas la structure de la base de données au moment du design.
CDynamicAccessor
appelsIColumnsInfo::GetColumnInfo
pour obtenir les informations de colonne de base de données. Il crée et gère un accesseur et la mémoire tampon.CDynamicParameterAccessor Utilisez cet accesseur pour gérer les types de commandes inconnus. Lorsque vous préparez les commandes,
CDynamicParameterAccessor
vous pouvez obtenir des informations de paramètre à partir de l’interfaceICommandWithParameters
, si le fournisseur prend en chargeICommandWithParameters
.CDynamicStringAccessor, CDynamicStringAccessorA et CDynamicStringAccessorW utilisent ces classes quand vous n’avez aucune connaissance du schéma de base de données.
CDynamicStringAccessorA
récupère les données sous forme de chaînes ANSI ;CDynamicStringAccessorW
récupère les données sous forme de chaînes Unicode.CManualAccessor Avec cette classe, vous pouvez utiliser les types de données souhaités si le fournisseur peut convertir le type. Il gère à la fois les colonnes de résultat et les paramètres de commande.
Le tableau suivant récapitule la prise en charge dans les types d’accesseur de modèle OLE DB.
Type d’accesseur | Dynamique | Gère les params | Buffer | 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 d’ensembles de lignes
Les modèles OLE DB prennent en charge trois types d’ensembles de lignes (voir la figure précédente) : les ensembles de lignes uniques (implémentés par CRowset), les ensembles de lignes en bloc (implémentés par CBulkRowset) et les ensembles de lignes de tableau (implémentés par CArrayRowset). Les ensembles de lignes uniques récupèrent un handle de ligne unique lorsqu’ils MoveNext
sont appelés. Les ensembles de lignes en bloc peuvent extraire plusieurs handles de ligne. Les ensembles de lignes de tableau sont des ensembles de lignes accessibles à l’aide de la syntaxe de tableau.
La figure suivante montre les types d’ensembles de lignes.
Classes d’ensemble de lignes
Les ensembles de lignes de schéma n’accèdent pas aux données dans le magasin de données, mais accèdent à des informations sur le magasin de données, appelées métadonnées. Les ensembles de lignes de schéma sont généralement utilisés dans des situations où la structure de base de données n’est pas connue au moment de la compilation et doit être obtenue au moment de l’exécution.