Partager via


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.

Diagram that shows the relationships between Accessor types.
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 appels IColumnsInfo::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’interface ICommandWithParameters , si le fournisseur prend en charge ICommandWithParameters.

  • 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 No modèles OLE DB Non
CDynamicParameterAccessor Oui Oui modèles OLE DB Non
CDynamicStringAccessor[A,W] Oui No 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.

Diagram that shows the relationships between Rowset types.
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.

Voir aussi

Modèles du consommateur OLE DB