Partager via


Jeu d'enregistrements (ODBC)

Mise à jour : novembre 2007

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 jeu d'enregistrements constitué à partir d'une table est « all customers » (« tous les clients ») ; ce jeu d'enregistrements 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 jeu d'enregistrements 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 jeu d'enregistrements 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.

Remarque :

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

Remarque :

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 jeux d'enregistrements

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 jeu d'enregistrements est modifiable, extensible ou en lecture seule. Si le jeu d'enregistrements 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 jeu d'enregistrements 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 jeu d'enregistrements pour définir la sélection du jeu d'enregistrements à l'exécution.

Instantanés et feuilles de réponse dynamiques

Il existe deux principaux types de jeux d'enregistrements : 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 jeux d'enregistrements, 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 jeu d'enregistrements, sans que vous ayez à lancer de nouveau une requête ou à actualiser le jeu d'enregistrements. 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 jeux d'enregistrements : les jeux d'enregistrements dynamiques et les jeux d'enregistrements 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 jeux d'enregistrements 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 jeux d'enregistrements en avant seulement offrent la méthode d'accès la plus efficace pour les jeux d'enregistrements ne nécessitant pas de mises à jour ou de défilement arrière. Par exemple, vous pouvez utiliser un jeu d'enregistrements 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 jeu d'enregistrements 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.

    Remarque :

    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 jeux d'enregistrements

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 jeu d'enregistrements représente des colonnes provenant de deux ou de plusieurs tables.) Lorsque vous dérivez une classe de jeu d'enregistrements, 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 jeu d'enregistrements ; en outre, RFX peut transférer les données de votre jeu d'enregistrements vers la source de données. Pour plus d'informations, consultez Record Field Exchange (RFX) et Jeu d'enregistrements : 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 jeu d'enregistrements 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 jeu d'enregistrements, consultez Jeu d'enregistrements : architecture (ODBC).

Les rubriques suivantes décrivent en détail l'utilisation des objets Recordset (jeux d'enregistrements) : 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 jeux d'enregistrements

Rubriques relatives aux mécanismes de modification des jeux d'enregistrements

Rubriques relatives à quelques techniques avancées

Rubriques sur le fonctionnement des jeux d'enregistrements

Voir aussi

Tâches

Ajout d'un consommateur ODBC MFC

Concepts

ODBC (Open Database Connectivity)

Transaction (ODBC)