MFC : utilisation de classes de bases de données sans document ni vue
Parfois, vous ne souhaiterez peut-être pas utiliser l’architecture de document/vue de l’infrastructure dans vos applications de base de données. Cette rubrique explique :
Quand vous n’avez pas besoin d’utiliser des documents tels que la sérialisation de documents.
Options de l’Assistant Application pour prendre en charge les applications sans sérialisation et sans commandes de menu Fichier liées au document, telles que Nouveau, Ouvrir, Enregistrer et Enregistrer sous.
Comment utiliser une application qui utilise un document minimal.
Comment structurer une application sans document ni affichage.
Quand vous n’avez pas besoin de documents
Certaines applications ont un concept distinct d’un document. Ces applications chargent généralement tout ou la plupart d’un fichier à partir d’un stockage en mémoire avec une commande Ouvrir de fichier . Ils réécritnt le fichier mis à jour dans le stockage en même temps avec une commande Enregistrer ou Enregistrer sous . Ce que l’utilisateur voit est un fichier de données.
Toutefois, certaines catégories d’applications ne nécessitent pas de document. Les applications de base de données fonctionnent en termes de transactions. L’application sélectionne les enregistrements d’une base de données et les présente à l’utilisateur, souvent un par un. Ce que l’utilisateur voit est généralement un enregistrement actif unique, qui peut être le seul en mémoire.
Si votre application ne nécessite pas de document pour le stockage des données, vous pouvez vous dispenser de certaines ou de toutes les architectures de document/vue de l’infrastructure. La quantité que vous dispensez dépend de l’approche que vous préférez. Vous pouvez :
Utilisez un document minimal comme emplacement pour stocker une connexion à votre source de données, mais ne disposez pas des fonctionnalités de document normales telles que la sérialisation. Cela est utile lorsque vous souhaitez plusieurs vues des données et que vous souhaitez synchroniser toutes les vues, les mettre à jour en une seule fois, et ainsi de suite.
Utilisez une fenêtre frame dans laquelle vous dessinez directement, plutôt que d’utiliser une vue. Dans ce cas, vous omettez le document et stockez toutes les connexions de données ou de données dans l’objet frame-window.
Options de l’Assistant Application pour les documents et les affichages
L’Assistant Application MFC propose plusieurs options dans la prise en charge de la base de données Select, qui sont répertoriées dans le tableau suivant. Si vous utilisez l’Assistant Application MFC pour créer une application, toutes ces options produisent des applications avec des documents et des vues. Certaines options fournissent des documents et des vues qui omettent des fonctionnalités de document inutiles. Pour plus d’informations, consultez l’Assistant Prise en charge de la base de données, Application MFC.
Option | Afficher | Document |
---|---|---|
Aucun | Dérivé de CView . |
Fournit aucune prise en charge de la base de données. C’est l’option par défaut. Si vous sélectionnez l’option de prise en charge de l’architecture document/affichage dans la page Type d’application, Assistant Application MFC, vous obtenez une prise en charge complète du document, notamment la sérialisation et les commandes New, Open, Save et Save As dans le menu Fichier. Consultez les applications sans document. |
Fichiers d’en-tête uniquement | Dérivé de CView . |
Fournit le niveau de base de la prise en charge de la base de données pour votre application. Inclut Afxdb.h. Ajoute des bibliothèques de liens, mais ne crée pas de classes spécifiques à la base de données. Vous pouvez créer des recordsets ultérieurement et les utiliser pour examiner et mettre à jour les enregistrements. |
Vue de base de données sans prise en charge des fichiers | Dérivé de CRecordView |
Fournit la prise en charge des documents, mais aucune prise en charge de sérialisation. Le document peut stocker le jeu d’enregistrements et coordonner plusieurs vues ; ne prend pas en charge la sérialisation ou les commandes New, Open, Save et Save As. Consultez Applications avec des documents minimal. Si vous incluez une vue de base de données, vous devez spécifier la source des données. Inclut les fichiers d’en-tête de base de données, les bibliothèques de liens, une vue d’enregistrement et un jeu d’enregistrements. (Disponible uniquement pour les applications avec le Option de prise en charge de l’architecture de document/affichage sélectionnée dans la page Application Type, Assistant Application MFC.) |
Vue de base de données avec prise en charge des fichiers | Dérivé de CRecordView |
Fournit une prise en charge complète des documents, notamment la sérialisation et les commandes de menu Fichier liées au document. Les applications de base de données fonctionnent généralement par enregistrement plutôt que par fichier et n’ont donc pas besoin de sérialisation. Toutefois, vous pouvez avoir une utilisation spéciale pour la sérialisation. Consultez Applications avec des documents minimal. Si vous incluez une vue de base de données, vous devez spécifier la source des données. Inclut les fichiers d’en-tête de base de données, les bibliothèques de liens, une vue d’enregistrement et un jeu d’enregistrements. (Disponible uniquement pour les applications avec le Option de prise en charge de l’architecture de document/affichage sélectionnée dans la page Application Type, Assistant Application MFC.) |
Pour une discussion sur les alternatives à la sérialisation et à d’autres utilisations pour la sérialisation, consultez Serialization : Serialization vs. Database Input/Output.
Applications avec des documents minimaux
L’Assistant Application MFC propose deux options qui prennent en charge les applications d’accès aux données basées sur des formulaires. Chaque option crée une CRecordView
classe de vue dérivée et un document. Ils diffèrent dans ce qu’ils quittent le document.
Document sans prise en charge des fichiers
Sélectionnez l’option de base de données de l’Assistant Application sans prise en charge des fichiers si vous n’avez pas besoin de sérialisation de document. Le document sert les objectifs utiles suivants :
Il s’agit d’un endroit pratique pour stocker un
CRecordset
objet.Cette utilisation met en parallèle les concepts de document ordinaires : le document stocke les données (ou, dans ce cas, un ensemble d’enregistrements) et la vue est une vue du document.
Si votre application présente plusieurs vues (comme plusieurs vues d’enregistrement), un document prend en charge la coordination des vues.
Si plusieurs vues affichent les mêmes données, vous pouvez utiliser la
CDocument::UpdateAllViews
fonction membre pour coordonner les mises à jour de toutes les vues lorsqu’une vue modifie les données.
Vous utilisez généralement cette option pour les applications simples basées sur des formulaires. L’Assistant Application prend automatiquement en charge une structure pratique pour ces applications.
Document avec prise en charge des fichiers
Sélectionnez la vue base de données de l’Assistant Application avec prise en charge des fichiers lorsque vous disposez d’une autre utilisation pour les commandes de menu Fichier associées au document et la sérialisation des documents. Pour la partie d’accès aux données de votre programme, vous pouvez utiliser le document de la même façon que décrit dans Document sans support de fichier. Vous pouvez utiliser la fonctionnalité de sérialisation du document, par exemple, pour lire et écrire un document de profil utilisateur sérialisé qui stocke les préférences de l’utilisateur ou d’autres informations utiles. Pour plus d’idées, consultez Sérialisation : sérialisation et sortie de base de données.
L’Assistant Application prend en charge cette option, mais vous devez écrire le code qui sérialise le document. Stockez les informations sérialisées dans les membres de données de document.
Applications sans document
Vous pouvez parfois écrire une application qui n’utilise pas de documents ou de vues. Sans documents, vous stockez vos données (telles qu’un CRecordset
objet) dans votre classe frame-window ou votre classe d’application. Toutes les exigences supplémentaires varient selon que l’application présente une interface utilisateur.
Prise en charge de la base de données avec une interface utilisateur
Si vous disposez d’une interface utilisateur (autre que, par exemple, une interface de ligne de commande de console), votre application se trouve directement dans la zone cliente de la fenêtre frame plutôt que dans une vue. Une telle application n’utilise CRecordView
pas , CFormView
ou CDialog
pour son interface utilisateur principale, mais elle est normalement utilisée CDialog
pour les dialogues ordinaires.
Écriture d’applications sans documents
Étant donné que l’Assistant Application ne prend pas en charge la création d’applications sans documents, vous devez écrire votre propre CWinApp
classe dérivée et, si nécessaire, créer également une ou CMDIFrameWnd
une CFrameWnd
classe. Remplacez et déclarez CWinApp::InitInstance
un objet d’application en tant que :
CYourNameApp theApp;
Le framework fournit toujours le mécanisme de carte de messages et de nombreuses autres fonctionnalités.
Prise en charge de la base de données distincte de l’interface utilisateur
Certaines applications n’ont pas besoin d’une interface utilisateur ou d’une seule interface utilisateur minimale. Par exemple, supposons que vous écriviez :
Objet d’accès aux données intermédiaire que d’autres applications (clients) appellent pour un traitement spécial des données entre l’application et la source de données.
Application qui traite les données sans intervention de l’utilisateur, telle qu’une application qui déplace les données d’un format de base de données vers une autre ou une autre qui effectue des calculs et effectue des mises à jour par lots.
Étant donné qu’aucun document ne possède l’objet CRecordset
, vous souhaitez probablement le stocker en tant que membre de données incorporé dans votre CWinApp
classe d’application dérivée. Il existe des alternatives :
Ne pas garder un objet permanent
CRecordset
du tout. Vous pouvez passer NULL à vos constructeurs de classes recordset. Dans ce cas, l’infrastructure crée un objet temporaireCDatabase
à l’aide des informations de la fonction membre du jeu d’enregistrementsGetDefaultConnect
. Il s’agit de l’approche la plus probable.Rendre l’objet
CRecordset
une variable globale. Cette variable doit être un pointeur vers un objet recordset que vous créez dynamiquement dans votreCWinApp::InitInstance
remplacement. Cela évite de tenter de construire l’objet avant l’initialisation de l’infrastructure.Utilisation d’objets recordset comme vous le feriez dans le contexte d’un document ou d’une vue. Créez des recordsets dans les fonctions membres de vos objets application ou fenêtre frame.