Partager via


Jeu d'enregistrements : création et fermeture de jeux d'enregistrements (ODBC)

Mise à jour : novembre 2007

Cette rubrique s'applique aux classes ODBC MFC.

Pour utiliser un jeu d'enregistrements, construisez un objet recordset et appelez sa fonction membre Open pour exécuter la requête du jeu d'enregistrements et sélectionner les enregistrements. Lorsque vous avez fini d'utiliser le jeu d'enregistrements, fermez l'objet et supprimez-le.

Cette rubrique explique :

  • quand et comment créer un objet recordset ;

  • quand et comment qualifier le comportement du jeu d'enregistrements en le paramétrant, le filtrant, le triant ou le verrouillant ;

  • quand et comment fermer un objet recordset.

Création de jeux d'enregistrements à l'exécution

Avant de créer les objets recordset dans votre programme, vous écrivez généralement les classes de jeu d'enregistrements propres à l'application. Pour plus d'informations sur cette étape préliminaire, consultez Ajout d'un consommateur ODBC MFC.

Ouvrez un objet feuille de réponse dynamique ou instantané lorsque vous devez sélectionner des enregistrements à partir d'une source de données. Le type d'objet à créer dépend de votre utilisation des données dans l'application et de la prise en charge assurée par le pilote ODBC. Pour plus d'informations, Feuille de réponse dynamique et Instantané.

Pour ouvrir un jeu d'enregistrements

  1. Construisez l'objet de la classe dérivée de CRecordset.

    Vous pouvez construire l'objet sur le tas ou sur le frame de pile d'une fonction.

  2. Modifiez, le cas échéant, le comportement par défaut du jeu d'enregistrements. Pour connaître les options disponibles, consultez Définition des options du jeu d'enregistrements.

  3. Appelez la fonction membre Open de l'objet.

Dans le constructeur, passez un pointeur à un objet de CDatabaseou la valeur NULL pour utiliser un objet temporaire de base de données que l'infrastructure construit et ouvre en fonction de la chaîne de connexion retournée par la fonction membre GetDefaultConnect. L'objet CDatabase peut déjà être connecté à une source de données.

L'appel de Open utilise SQL pour sélectionner les enregistrements de la source de données. Le premier enregistrement sélectionné (s'il en existe) constitue l'enregistrement courant. Les valeurs des champs de cet enregistrement sont stockées dans les membres de données de type champ de l'objet recordset. Si des enregistrements ont été sélectionnés, les deux fonctions membres IsBOF et IsEOF retournent 0.

Dans l'appel de Open, vous pouvez :

  • Indiquer si le jeu d'enregistrements est une feuille de réponse dynamique ou un instantané. Par défaut, les jeux d'enregistrements sont ouverts en tant qu'instantanés. Vous pouvez aussi définir un jeu d'enregistrements en avant seulement (forward-only), si vous voulez faire défiler les enregistrements l'un après l'autre sans revenir en arrière.

    Par défaut, un jeu d'enregistrements utilise le type par défaut stocké dans le membre m_nDefaultType du membre de données de CRecordset. Les Assistants écrivent le code nécessaire à l'initialisation du membre m_nDefaultType avec le type de jeu d'enregistrements sélectionné dans l'Assistant. Au lieu d'accepter cette valeur par défaut, vous pouvez utiliser un autre type de jeu d'enregistrements.

  • Définir une chaîne pour remplacer l'instruction SQL par défaut SELECT que le jeu d'enregistrements construit.

  • Indiquer si le jeu d'enregistrements est en lecture seule ou en ajout seul. Les jeux d'enregistrements permettent une mise à jour complète par défaut, mais vous pouvez n'autoriser que l'ajout de nouveaux enregistrements ou interdire toutes les mises à jour.

L'exemple suivant montre comment ouvrir un objet instantané en lecture seule de la classe CStudentSet, laquelle est propre à l'application :

// Construct the snapshot object
CStudentSet rsStudent( NULL );
// Set options if desired, then open the recordset
if(!rsStudent.Open(CRecordset::snapshot, NULL, CRecordset::readOnly))
    return FALSE;
// Use the snapshot to operate on its records...

Après l'appel de Open, utilisez les fonctions membres et les membres de données de l'objet pour manipuler les enregistrements. Dans certains cas, il se peut que vous souhaitiez lancer une nouvelle requête ou actualiser le jeu d'enregistrements pour inclure les modifications intervenues sur la source de données. Pour plus d'informations, consultez Jeu d'enregistrements : lancement d'une nouvelle requête sur un jeu d'enregistrements (ODBC).

Conseil :

La chaîne de connexion que vous utilisez pendant le développement peut ne pas être identique à celle dont les utilisateurs finaux ont besoin. Pour obtenir des suggestions sur la généralisation de votre application sous cet aspect, consultez Source de données : Gestion des connexions (ODBC).

Définition des options du jeu d'enregistrements

Après avoir construit votre objet recordset et avant d'appeler Open pour sélectionner les enregistrements, il se peut que vous souhaitiez définir certaines options pour contrôler le comportement du jeu d'enregistrements. Pour l'ensemble des jeux d'enregistrements, vous pouvez :

  • définir un filtre pour limiter le nombre d'enregistrements sélectionnés ;

  • définir un ordre de tri pour les enregistrements ;

  • définir des paramètres afin de pouvoir sélectionner des enregistrements à l'aide des informations fournies ou calculées lors de l'exécution.

Vous pouvez aussi définir l'option suivante si les conditions sont remplies :

  • Si le jeu d'enregistrements est modifiable et prend en charge les options de verrouillage, vous pouvez définir la méthode de verrouillage utilisée pour les mises à jour.
Remarque :

Pour influer sur la sélection des enregistrements, vous devez définir ces options avant d'appeler la fonction membre Open.

Fermeture d'un jeu d'enregistrements

Lorsque vous avez fini d'utiliser votre jeu d'enregistrements, vous devez le supprimer et désallouer sa mémoire.

Pour fermer un jeu d'enregistrements

  1. Appelez sa fonction membre Close.

  2. Supprimez l'objet recordset.

    Si vous l'avez déclaré sur le frame de pile d'une fonction, l'objet est supprimé automatiquement quand il devient hors de portée. Sinon, utilisez l'opérateur delete.

La fonction Close libère le handle HSTMT du jeu d'enregistrements. Elle ne supprime pas l'objet C++.

Voir aussi

Concepts

Jeu d'enregistrements (ODBC)

Jeu d'enregistrements : défilement (ODBC)

Jeu d'enregistrements : ajout, modification et suppression d'enregistrements (ODBC)