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 :
Comment écrire une application basée sur un formulaire à l’aide d’un
CRecordView
objet comme vue principale sur votre document.Comment utiliser des objets recordset dans vos documents et affichages.
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 unCDatabase
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 unCDatabase
objet et l’ouvrir. Les Assistants sont implémentésGetDefaultConnect
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-ciCDatabase
.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 saOpen
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 duCDatabase
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.