MFC: Verwenden von Datenbankklassen ohne Dokumente und Ansichten
Manchmal möchten Sie die Dokument-/Ansichtsarchitektur des Frameworks in Ihren Datenbankanwendungen möglicherweise nicht verwenden. In diesem Thema wird Folgendes erläutert:
Wenn Sie keine Dokumente wie die Dokument serialisierung verwenden müssen.
Optionen des Anwendungs-Assistenten, um Anwendungen ohne Serialisierung und ohne dokumentbezogene Menübefehle wie "Neu", "Öffnen", "Speichern" und "Speichern unter" zu unterstützen.
So arbeiten Sie mit einer Anwendung, die ein minimales Dokument verwendet.
Wenn Sie keine Dokumente benötigen
Einige Anwendungen weisen ein eindeutiges Konzept eines Dokuments auf. Diese Anwendungen laden in der Regel alle oder die meisten Dateien aus dem Speicher in den Speicher mit einem Befehl "Datei öffnen ". Sie schreiben die aktualisierte Datei mit einem Befehl "Speichern unter " oder "Speichern unter " auf einmal in den Speicher zurück. Was der Benutzer sieht, ist eine Datendatei.
Einige Anwendungskategorien erfordern jedoch kein Dokument. Datenbankanwendungen funktionieren in Bezug auf Transaktionen. Die Anwendung wählt Datensätze aus einer Datenbank aus und stellt sie dem Benutzer vor, häufig einzeln. Was der Benutzer sieht, ist in der Regel ein einzelner aktueller Datensatz, der möglicherweise der einzige im Arbeitsspeicher ist.
Wenn Ihre Anwendung kein Dokument zum Speichern von Daten benötigt, können Sie auf einige oder alle Dokument-/Ansichtsarchitekturen des Frameworks verzichten. Wie viel Sie auf sich verzichten, hängt von dem von Ihnen gewünschten Ansatz ab. Sie könnten:
Verwenden Sie ein minimales Dokument als Ort, um eine Verbindung mit Ihrer Datenquelle zu speichern, verzichten Sie jedoch auf normale Dokumentfeatures wie die Serialisierung. Dies ist nützlich, wenn Sie mehrere Ansichten der Daten anzeigen möchten und alle Ansichten synchronisieren möchten, sie alle gleichzeitig aktualisieren usw.
Verwenden Sie ein Rahmenfenster, in das Sie direkt zeichnen, anstatt eine Ansicht zu verwenden. In diesem Fall lassen Sie das Dokument weg und speichern alle Daten- oder Datenverbindungen im Framefensterobjekt.
Optionen des Anwendungs-Assistenten für Dokumente und Ansichten
Der MFC-Anwendungs-Assistent verfügt über mehrere Optionen in der Auswahldatenbankunterstützung, die in der folgenden Tabelle aufgeführt sind. Wenn Sie den MFC-Anwendungs-Assistenten zum Erstellen einer Anwendung verwenden, erzeugen alle diese Optionen Anwendungen mit Dokumenten und Ansichten. Einige Optionen bieten Dokumente und Ansichten, die nicht benötigte Dokumentfunktionen weglassen. Weitere Informationen finden Sie unter Datenbankunterstützung, MFC-Anwendungs-Assistent.
Option | Sicht | Dokument |
---|---|---|
None | Abgeleitet von CView . |
Stellt keine Datenbankunterstützung bereit. Dies ist die Standardoption. Wenn Sie die Unterstützungsoption "Dokument-/Ansichtsarchitektur" auf der Seite "Anwendungstyp", "MFC-Anwendungs-Assistent" auswählen, erhalten Sie vollständige Dokumentunterstützung, einschließlich Serialisierung und Befehle "Neu", "Öffnen", "Speichern" und "Speichern unter" im Menü "Datei". Anwendungen ohne Dokument anzeigen. |
Nur Headerdateien | Abgeleitet von CView . |
Stellt die grundlegende Ebene der Datenbankunterstützung für Ihre Anwendung bereit. Enthält Afxdb.h. Fügt Verknüpfungsbibliotheken hinzu, erstellt jedoch keine datenbankspezifischen Klassen. Sie können Recordsets später erstellen und sie verwenden, um Datensätze zu untersuchen und zu aktualisieren. |
Datenbankansicht ohne Dateiunterstützung | Abgeleitet von CRecordView |
Bietet Dokumentunterstützung, aber keine Serialisierungsunterstützung. Dokument kann Recordset speichern und mehrere Ansichten koordinieren; unterstützt keine Serialisierung oder die Befehle "Neu", "Öffnen", "Speichern" und "Speichern unter". Weitere Informationen finden Sie unter Anwendungen mit minimalen Dokumenten. Wenn Sie eine Datenbankansicht einschließen, müssen Sie die Quelle der Daten angeben. Umfasst Datenbankkopfdateien, Verknüpfungsbibliotheken, eine Datensatzansicht und ein Recordset. (Nur für Anwendungen mit der Option zur Unterstützung der Dokument-/Ansichtsarchitektur, die auf der Seite "Anwendungstyp", "MFC-Anwendungs-Assistent " ausgewählt ist.) |
Datenbankansicht mit Dateiunterstützung | Abgeleitet von CRecordView |
Bietet vollständige Dokumentunterstützung, einschließlich Serialisierung und dokumentbezogene Menübefehle im Dateimenü. Datenbankanwendungen funktionieren in der Regel auf Datensatzbasis und nicht auf Dateibasis und benötigen daher keine Serialisierung. Möglicherweise haben Sie jedoch eine spezielle Verwendung für die Serialisierung. Weitere Informationen finden Sie unter Anwendungen mit minimalen Dokumenten. Wenn Sie eine Datenbankansicht einschließen, müssen Sie die Quelle der Daten angeben. Umfasst Datenbankkopfdateien, Verknüpfungsbibliotheken, eine Datensatzansicht und ein Recordset. (Nur für Anwendungen mit der Option zur Unterstützung der Dokument-/Ansichtsarchitektur, die auf der Seite "Anwendungstyp", "MFC-Anwendungs-Assistent " ausgewählt ist.) |
Eine Erläuterung der Alternativen zur Serialisierung und alternativen Verwendungsmöglichkeiten für die Serialisierung finden Sie unter Serialisierung: Serialisierung vs. Datenbankeingabe/-ausgabe.
Anwendungen mit minimalen Dokumenten
Der MFC-Anwendungs-Assistent verfügt über zwei Optionen, die formularbasierte Datenzugriffsanwendungen unterstützen. Jede Option erstellt eine CRecordView
von -abgeleitete Ansichtsklasse und ein Dokument. Sie unterscheiden sich darin, was sie aus dem Dokument verlassen.
Dokument ohne Dateiunterstützung
Wählen Sie die Datenbankoption Datenbankansicht des Anwendungs-Assistenten ohne Dateiunterstützung aus, wenn Sie keine Dokument serialisieren müssen. Das Dokument dient den folgenden nützlichen Zwecken:
Es ist ein praktischer Ort, um ein
CRecordset
Objekt zu speichern.Diese Verwendung paralleliert gewöhnliche Dokumentkonzepte: Das Dokument speichert die Daten (oder in diesem Fall eine Gruppe von Datensätzen), und die Ansicht ist eine Ansicht des Dokuments.
Wenn Ihre Anwendung mehrere Ansichten (z. B. mehrere Datensatzansichten) darstellt, unterstützt ein Dokument die Koordination der Ansichten.
Wenn mehrere Ansichten dieselben Daten anzeigen, können Sie die
CDocument::UpdateAllViews
Memberfunktion verwenden, um Aktualisierungen aller Ansichten zu koordinieren, wenn eine Ansicht die Daten ändert.
In der Regel verwenden Sie diese Option für einfache formularbasierte Anwendungen. Der Anwendungs-Assistent unterstützt automatisch eine bequeme Struktur für solche Anwendungen.
Dokument mit Dateiunterstützung
Wählen Sie die Datenbankoption Datenbankansicht des Anwendungs-Assistenten mit Dateiunterstützung aus, wenn Sie eine alternative Verwendung für die Menübefehle für das Dokumentmenü "Datei " und die Dokument serialisierung haben. Für den Datenzugriffsteil Ihres Programms können Sie das Dokument auf die gleiche Weise verwenden wie unter "Dokument ohne Dateiunterstützung" beschrieben. Sie können beispielsweise die Serialisierungsfunktion des Dokuments verwenden, um ein serialisiertes Benutzerprofildokument zu lesen und zu schreiben, in dem die Einstellungen des Benutzers oder andere nützliche Informationen gespeichert werden. Weitere Ideen finden Sie unter Serialisierung: Serialisierung im Vergleich zur Datenbankeingabe/-ausgabe.
Der Anwendungs-Assistent unterstützt diese Option, aber Sie müssen den Code schreiben, der das Dokument serialisiert. Speichern Sie die serialisierten Informationen in Dokumentdatenelementen.
Anwendungen ohne Dokument
Möglicherweise möchten Sie manchmal eine Anwendung schreiben, die keine Dokumente oder Ansichten verwendet. Ohne Dokumente speichern Sie Ihre Daten (z. B. ein CRecordset
Objekt) in Ihrer Framefensterklasse oder ihrer Anwendungsklasse. Alle zusätzlichen Anforderungen hängen davon ab, ob die Anwendung eine Benutzeroberfläche darstellt.
Datenbankunterstützung mit einer Benutzeroberfläche
Wenn Sie über eine Benutzeroberfläche (außer einer Konsolen-Befehlszeilenschnittstelle) verfügen, zeichnet Ihre Anwendung direkt in den Clientbereich des Framefensters und nicht in eine Ansicht. Eine solche Anwendung verwendet CRecordView
, oder CFormView
CDialog
für seine Standard Benutzeroberfläche, aber normalerweise CDialog
für gewöhnliche Dialogfelder.
Schreiben von Anwendungen ohne Dokumente
Da der Anwendungs-Assistent das Erstellen von Anwendungen ohne Dokumente nicht unterstützt, müssen Sie ihre eigene CWinApp
abgeleitete Klasse schreiben und bei Bedarf auch eine CFrameWnd
oder CMDIFrameWnd
eine Klasse erstellen. Überschreiben CWinApp::InitInstance
und Deklarieren eines Anwendungsobjekts als:
CYourNameApp theApp;
Das Framework stellt weiterhin den Nachrichtenzuordnungsmechanismus und viele andere Features zur Anwendung.
Datenbankunterstützung getrennt von der Benutzeroberfläche
Einige Anwendungen benötigen keine Benutzeroberfläche oder nur eine minimale Benutzeroberfläche. Angenommen, Sie schreiben:
Ein zwischengeschaltetes Datenzugriffsobjekt, das von anderen Anwendungen (Clients) zur speziellen Verarbeitung von Daten zwischen der Anwendung und der Datenquelle aufgerufen wird.
Eine Anwendung, die Daten ohne Benutzereingriff verarbeitet, z. B. eine Anwendung, die Daten aus einem Datenbankformat in ein anderes oder eine Datenbank verschiebt, die Berechnungen durchführt und Batchaktualisierungen durchführt.
Da kein Dokument das CRecordset
Objekt besitzt, möchten Sie es wahrscheinlich als eingebettetes Datenmememm in Ihrer CWinApp
abgeleiteten Anwendungsklasse speichern. Zu den Alternativen gehören:
Ein permanentes
CRecordset
Objekt bleibt überhaupt nicht erhalten. Sie können NULL an Die Recordset-Klassenkonstruktoren übergeben. In diesem Fall erstellt das Framework ein temporäresCDatabase
Objekt mithilfe der Informationen in der Memberfunktion desGetDefaultConnect
Recordsets. Dies ist der wahrscheinlichste alternative Ansatz.CRecordset
Das Objekt wird zu einer globalen Variablen. Diese Variable sollte ein Zeiger auf ein Recordsetobjekt sein, das Sie dynamisch in IhrerCWinApp::InitInstance
Außerkraftsetzung erstellen. Dadurch wird vermieden, das Objekt zu erstellen, bevor das Framework initialisiert wird.Verwenden von Recordset-Objekten wie im Kontext eines Dokuments oder einer Ansicht. Erstellen Sie Recordsets in den Memberfunktionen Ihrer Anwendungs- oder Framefensterobjekte.