Partager via


MFC : utilisation de classes de bases de données avec des documents et des vues

Vous pouvez utiliser les classes de base de données MFC avec ou sans l’architecture de document/vue. Cette rubrique met l’accent sur l’utilisation de documents et de vues. Il explique :

Pour obtenir des alternatives, consultez MFC : Utilisation de classes de base de données sans documents et vues.

Écriture d’une application basée sur un formulaire

De nombreuses applications d’accès aux données sont basées sur des formulaires. L’interface utilisateur est un formulaire contenant des contrôles dans lesquels l’utilisateur examine, entre ou modifie des données. Pour rendre votre formulaire d’application basé, utilisez la classe CRecordView. Lorsque vous exécutez l’Assistant Application MFC et sélectionnez le type de client ODBC dans la page Prise en charge de la base de données, le projet utilise CRecordView pour la classe d’affichage.

Dans une application basée sur un formulaire, chaque objet d’affichage d’enregistrement stocke un pointeur vers un CRecordset objet. Le mécanisme d’échange de champs d’enregistrement (RFX) du framework échange des données entre le jeu d’enregistrements et la source de données. Le mécanisme d’échange de données de dialogue (DDX) échange des données entre les membres de données de champ de l’objet recordset et les contrôles du formulaire. CRecordView fournit également des fonctions de gestionnaire de commandes par défaut pour naviguer de l’enregistrement à l’enregistrement sur le formulaire.

Pour créer une application basée sur des formulaires avec l’Assistant Application, consultez l’Assistant Création d’une application MFC basée sur des formulaires et prise en charge de la base de données, Assistant Application MFC.

Pour obtenir une présentation complète des formulaires, consultez Les vues d’enregistrement.

Utilisation des recordsets dans les documents et les vues

De nombreuses applications simples basées sur des formulaires n’ont pas besoin de documents. Si votre application est plus complexe, vous souhaitez probablement utiliser un document comme proxy pour la base de données, en stockant un CDatabase objet qui se connecte à la source de données. Les applications basées sur des formulaires stockent généralement un pointeur vers un objet recordset dans la vue. D’autres types d’applications de base de données stockent des recordsets et CDatabase des objets dans le document. Voici quelques possibilités d’utilisation de documents dans les applications de base de données :

  • Si vous accédez à un jeu d’enregistrements dans un contexte local, créez un CRecordset objet localement dans les fonctions membres du document ou de la vue, selon les besoins.

    Déclarez un objet recordset en tant que variable locale dans une fonction. Passez NULL au constructeur, ce qui provoque la création et l’ouverture d’un objet temporaire CDatabase pour vous. En guise d’alternative, passez un pointeur vers un CDatabase objet. Utilisez le jeu d’enregistrements dans la fonction et laissez-le être détruit automatiquement lorsque la fonction se ferme.

    Lorsque vous passez NULL à un constructeur d’recordset, l’infrastructure utilise des informations retournées par la fonction membre du GetDefaultConnect jeu d’enregistrements pour créer un CDatabase objet et l’ouvrir. Les Assistants sont implémentés GetDefaultConnect pour vous.

  • Si vous accédez à un jeu d’enregistrements pendant la durée de vie de votre document, incorporez un ou plusieurs CRecordset objets dans votre document.

    Construisez les objets recordset lorsque vous initialisez le document ou si nécessaire. Vous pouvez écrire une fonction qui retourne un pointeur vers le jeu d’enregistrements s’il existe déjà ou construit et ouvre le jeu d’enregistrements s’il n’existe pas encore. Fermez, supprimez et recréez le jeu d’enregistrements en fonction des besoins, ou appelez sa Requery fonction membre pour actualiser les enregistrements.

  • Si vous accédez à une source de données pendant la durée de vie de votre document, incorporez un CDatabase objet ou stockez un pointeur vers un objet dans celui-ci CDatabase .

    L’objet CDatabase gère une connexion à votre source de données. L’objet est construit automatiquement pendant la construction du document et vous appelez sa Open fonction membre lorsque vous initialisez le document. Lorsque vous construisez des objets recordset dans les fonctions membres du document, vous passez un pointeur vers l’objet du CDatabase document. Cela associe chaque jeu d’enregistrements à sa source de données. L’objet de base de données est généralement détruit lorsque le document se ferme. Les objets recordset sont généralement détruits lorsqu’ils quittent l’étendue d’une fonction.

Autres facteurs

Les applications basées sur des formulaires n’ont souvent aucune utilisation pour le mécanisme de sérialisation des documents de l’infrastructure. Vous pouvez donc supprimer, désactiver ou remplacer les commandes Nouveau et Ouvrir dans le menu Fichier . Consultez l’article Sérialisation : Sérialisation et entrée/sortie de base de données.

Vous pouvez également utiliser les nombreuses possibilités d’interface utilisateur que l’infrastructure peut prendre en charge. Par exemple, vous pouvez utiliser plusieurs CRecordView objets dans une fenêtre de fractionnement, ouvrir plusieurs jeux d’enregistrements dans différentes fenêtres enfants MDI (Multi Document Interface), et ainsi de suite.

Vous pouvez implémenter l’impression de tout ce qui se trouve dans votre vue, qu’il s’agisse d’un formulaire implémenté avec CRecordView ou d’un autre élément. Comme les classes dérivées de CFormView, CRecordView ne prennent pas en charge l’impression, mais vous pouvez remplacer la fonction membre pour autoriser l’impression OnPrint . Pour plus d’informations, consultez la classe CFormView.

Vous ne souhaiterez peut-être pas utiliser des documents et des vues du tout. Dans ce cas, consultez MFC : Utilisation de classes de base de données sans documents et vues.

Voir aussi

Classes de base de données MFC