Partager via


Recordset (ODBC)

Cette rubrique s'applique aux classes ODBC MFC.

Un objet de la classe CRecordset représente un ensemble d'enregistrements sélectionnés à partir d'une source de données. Les enregistrements peuvent provenir :

  • d'une table ;

  • d'une requête ;

  • d'une procédure stockée accédant à une ou plusieurs tables.

Un exemple de recordset constitué à partir d'une table est « all customers » (« tous les clients ») ; ce recordset accède à la table Customer. Un exemple de requête est « all invoices for Joe Smith » (« toutes les factures de Joe Smith »). Un exemple de recordset fondé sur une procédure stockée (parfois appelée requête prédéfinie) est « all of the delinquent accounts » (« tous les comptes mauvais payeurs »), qui appelle une procédure stockée dans la base de données principale. Un recordset peut joindre deux ou plusieurs tables d'une même source de données, mais non des tables de sources de données différentes.

Notes

Pour plus d'informations sur la dérivation des classes de recordset à l'aide des Assistants, consultez Ajout d'un consommateur ODBC MFC et Prise en charge des bases de données, Assistant Application MFC.

Notes

Certains pilotes ODBC prennent en charge les vues de base de données. Dans ce sens, une vue est alors une requête créée initialement par l'instruction SQL CREATE VIEW Les Assistants ne prennent pas en charge les vues, mais vous pouvez vous-même écrire le code correspondant.

Capacités des recordsets

Tous les objets recordset partagent les capacités suivantes :

  • Si la source de données n'est pas en lecture seule, vous pouvez indiquer que le recordset est modifiable, extensible ou en lecture seule. Si le recordset est modifiable, vous avez le choix entre le verrouillage optimiste ou pessimiste, à condition que le pilote assure la prise en charge appropriée de la méthode de verrouillage. Si la source de données est en lecture seule, le recordset sera en lecture seule.

  • Vous pouvez appeler des fonctions membres pour faire défiler les enregistrements sélectionnés.

  • Vous pouvez filtrer les enregistrements pour indiquer les enregistrements à sélectionner parmi ceux qui sont disponibles.

  • Vous pouvez trier les enregistrements en ordre croissant ou décroissant, et ce sur une ou plusieurs colonnes.

  • Vous pouvez paramétrer le recordset pour définir la sélection du recordset à l'exécution.

Instantanés et feuilles de réponse dynamiques

Il existe deux principaux types de recordsets : les instantanés et les feuilles de réponse dynamiques. Tous deux sont pris en charge par la classe CRecordset. Chacun partage les caractéristiques communes à l'ensemble des recordsets, mais chacun dispose également d'extensions de fonctionnalités qui lui sont propres. Les instantanés fournissent une vue statique des données et sont particulièrement utiles dans le cas des états ou lorsque vous souhaitez obtenir une vue des données à un instant précis. Les feuilles de réponse dynamiques sont utiles lorsque vous voulez que les mises à jour effectuées par d'autres utilisateurs soient visibles dans le recordset, sans que vous ayez à lancer de nouveau une requête ou à actualiser le recordset. Les instantanés et les feuilles de réponse dynamiques peuvent être modifiables ou en lecture seule. Pour prendre en compte les enregistrements ajoutés ou supprimés par d'autres utilisateurs, appelez CRecordset::Requery.

CRecordset autorise également deux autres types de recordsets : les recordsets dynamiques et les recordsets en avant seulement (forward-only). Les premiers sont semblables aux feuilles de réponse dynamiques ; cependant, ils prennent en compte tout enregistrement ajouté ou supprimé sans appeler CRecordset::Requery. Pour cette raison, les recordsets dynamiques sont généralement coûteux en temps de traitement sur le SGBD et nombre de pilotes ODBC ne les prennent pas en charge. En comparaison, les recordsets en avant seulement offrent la méthode d'accès la plus efficace pour les recordsets ne nécessitant pas de mises à jour ou de défilement arrière. Par exemple, vous pouvez utiliser un recordset en avant seulement pour déplacer les données d'une source à une autre, quand vous n'avez besoin de consulter les données qu'en avançant. Pour utiliser un recordset en avant seulement, vous devez effectuer les deux actions suivantes :

  • Passer l'option CRecordset::forwardOnly comme paramètre nOpenType de la fonction membre Open.

  • Indiquer CRecordset::readOnly dans le paramètre dwOptions de la fonction Open.

    Notes

    Pour plus d'informations sur la configuration requise des pilotes ODBC pour la prise en charge des feuilles de réponse dynamiques, consultez ODBC. Pour obtenir la liste des pilotes ODBC contenus dans cette version de Visual C++ et des informations sur l'obtention de pilotes supplémentaires, consultez Liste de pilotes ODBC.

Vos recordsets

Pour chaque table, vue ou procédure stockée distincte à laquelle vous souhaitez accéder, vous définissez généralement une classe dérivée de CRecordset. (L'exception est la jointure de base de données, où un recordset représente des colonnes provenant de deux ou de plusieurs tables.) Lorsque vous dérivez une classe de recordset, vous activez le mécanisme RFX (Record Field eXchange) ou RFX en bloc (Bulk RFX), tous deux similaires au mécanisme DDX (Dialog Data eXchange). RFX et RFX en bloc simplifient le transfert de données entre la source et le recordset ; en outre, RFX peut transférer les données de votre recordset vers la source de données. Pour plus d'informations, consultez Record Field Exchange (RFX) et Recordset : extraction globale d'enregistrements (ODBC).

Un objet recordset donne accès à tous les enregistrements sélectionnés. Vous faites défiler les enregistrements sélectionnés à l'aide des fonctions membres de la classe CRecordset, comme MoveNext et MovePrev. En même temps, un objet recordset ne représente qu'un seul des enregistrements sélectionnés, à savoir l'enregistrement courant. Vous pouvez examiner les champs de l'enregistrement courant en déclarant les variables membres de la classe du recordset correspondant aux colonnes de la table ou des enregistrements obtenus par la requête de base de données. Pour plus d'informations sur les données membres d'un recordset, consultez Recordset : architecture (ODBC).

Les rubriques suivantes décrivent en détail l'utilisation des objets Recordset : Les rubriques sont réparties en catégories fonctionnelles et présentées selon l'ordre de lecture naturel afin d'en faciliter la consultation séquentielle.

Rubriques relatives aux mécanismes d'ouverture, de lecture et de fermeture des recordsets

Rubriques relatives aux mécanismes de modification des recordsets

Rubriques relatives à quelques techniques avancées

Rubriques sur le fonctionnement des recordsets

Voir aussi

Tâches

Ajout d'un consommateur ODBC MFC

Concepts

ODBC (Open Database Connectivity)

Transaction (ODBC)