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 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 fournit la liaison de paramètre et de colonne.

L'illustration suivante représente les types d'accesseurs.

Classes d'accesseurs

Types d'accesseurs

  • CAccessor Utilisez cet accesseur si 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 si vous ne connaissez pas la structure de la base de données au moment du design. CDynamicAccessor appelle IColumnsInfo::GetColumnInfo pour obtenir les informations sur les colonnes de 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, CDynamicStringAccessorA et CDynamicStringAccessorW Utilisez ces classes lorsque vous ne connaissez pas du tout le 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 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 d'ensembles de lignes

Les modèles OLE DB prennent en charge trois genres d'ensembles de lignes (consultez l'illustration précédente) : des ensembles de lignes simples (implémentés par CRowset), des ensembles de lignes en bloc (implémentés par CBulkRowset) et des ensembles de lignes de type tableau (implémentés par CArrayRowset). Les ensembles de lignes simples extraient un handle de ligne simple lors d'un appel de MoveNext. Les ensembles de lignes en bloc peuvent extraire plusieurs handles de ligne. Les ensembles de lignes de type tableau sont des ensembles de lignes qui sont accessibles à l'aide d'une syntaxe de tableau.

L'illustration suivante représente les différents types de ensembles de lignes.

Classes d'ensemble de lignes

Graphique RowsetType

Les ensembles 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 ensembles 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à.

Voir aussi

Concepts

Modèles du consommateur OLE DB (C++)