MFC: Verwenden von Datenbankklassen ohne Dokumente und Ansichten

Manchmal möchten Sie die Dokument-/Sichtarchitektur des Frameworks möglicherweise nicht in Ihren Datenbankanwendungen verwenden. In diesem Thema wird Folgendes erläutert:

Wenn Sie keine Dokumente benötigen

Einige Anwendungen haben ein eigenes Konzept eines Dokuments. Diese Anwendungen laden in der Regel die ganze oder den größten Teil einer Datei aus dem Speicher in den Arbeitsspeicher mit einem File Open-Befehl . Sie schreiben die aktualisierte Datei mit dem Befehl "Datei speichern" oder "Speichern unter" auf einmal in den Speicher zurück. Dem Benutzer wird eine Datendatei angezeigt.

Einige Kategorien von Anwendungen erfordern jedoch kein Dokument. Datenbankanwendungen werden im Hinblick auf Transaktionen betrieben. Die Anwendung wählt Datensätze aus einer Datenbank aus und präsentiert sie dem Benutzer, häufig nach und nach. Was dem Benutzer angezeigt wird, ist normalerweise 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 mit einem Teil oder der ganzen Dokument-/Ansichtsarchitektur des Frameworks auslagern. Wie viel Sie geben, hängt vom bevorzugten Ansatz ab. Sie könnten:

  • Verwenden Sie ein minimales Dokument als Ort, um eine Verbindung mit Ihrer Datenquelle zu speichern, aber verwenden Sie normale Dokumentfeatures wie die Serialisierung. Dies ist nützlich, wenn Sie mehrere Ansichten der Daten wünschen und alle Ansichten synchronisieren und alle gleichzeitig aktualisieren möchten und so weiter.

  • Verwenden Sie ein Rahmenfenster, in das Sie direkt zeichnen, anstatt eine Ansicht zu verwenden. In diesem Fall wird das Dokument weggelassen und alle Daten- oder Datenverbindungen im Framefensterobjekt gespeichert.

Optionen des Anwendungs-Assistenten für Dokumente und Sichten

Der MFC-Anwendungs-Assistent verfügt unter Datenbankunterstützung auswählen über mehrere Optionen, 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 stellen Dokumente und Ansichten zur Verfügung, die nicht mehr die Funktionalität von nicht erforderlichen Dokumenten enthalten. Weitere Informationen finden Sie unter Datenbankunterstützung, MFC-Anwendungs-Assistent.

Option Sicht Dokument
None Abgeleitet von CView. Bietet keine Datenbankunterstützung. Dies ist die Standardoption.

Wenn Sie auf der Seite Anwendungstyp, MFC-Anwendungs-Assistent die Option Zur Unterstützung der Dokument-/Ansichtarchitektur auswählen, erhalten Sie vollständige Dokumentunterstützung, einschließlich Serialisierung und der Befehle Neu, Öffnen, Speichern und Speichern unter im Menü Datei. Siehe Anwendungen ohne Dokument.
Nur Headerdateien Abgeleitet von CView. Stellt die grundlegende Ebene der Datenbankunterstützung für Ihre Anwendung zur Verfügung.

Enthält Afxdb.h. Fügt Linkbibliotheken hinzu, erstellt jedoch keine datenbankspezifischen Klassen. Sie können Recordsets später erstellen und verwenden, um Datensätze zu untersuchen und zu aktualisieren.
Datenbankansicht ohne Dateiunterstützung Abgeleitet von CRecordView Bietet Dokumentunterstützung, aber keine Serialisierungsunterstützung. Das Dokument kann Recordset speichern und mehrere Ansichten koordinieren. unterstützt keine Serialisierung oder die Befehle Neu, Öffnen, Speichernund Speichern unter . Siehe Anwendungen mit minimalen Dokumenten. Wenn Sie eine Datenbanksicht angeben, müssen Sie die Quelle der Daten angeben.

Enthält Datenbankheaderdateien, Linkbibliotheken, eine Datensatzansicht und ein Recordset. (Nur für Anwendungen verfügbar, für die die Unterstützungsoption Dokument-/ Ansichtarchitektur 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 dokumentbezogener Dateimenübefehle . Datenbankanwendungen arbeiten in der Regel auf Datensatzbasis und nicht auf Dateibasis und müssen daher nicht serialisiert werden. Möglicherweise haben Sie jedoch eine besondere Verwendung für die Serialisierung. Siehe Anwendungen mit minimalen Dokumenten. Wenn Sie eine Datenbanksicht angeben, müssen Sie die Quelle der Daten angeben.

Enthält Datenbankheaderdateien, Linkbibliotheken, eine Datensatzansicht und ein Recordset. (Nur für Anwendungen verfügbar, für die die Unterstützungsoption Dokument-/ Ansichtarchitektur auf der Seite Anwendungstyp, MFC-Anwendungs-Assistent ausgewählt ist.)

Eine Erörterung von Alternativen zur Serialisierung und alternativen Verwendungsmöglichkeiten für die Serialisierung finden Sie unter Serialisierung: Serialisierung im Vergleich zu Datenbankeingabe/-ausgabe.

Anwendungen mit minimalen Dokumenten

Der MFC-Anwendungs-Assistent verfügt über zwei Optionen, die formularbasierte Datenzugriffsanwendungen unterstützen. Jede Option erstellt eine von CRecordViewabgeleitete Ansichtsklasse und ein Dokument. Sie unterscheiden sich in dem, was sie aus dem Dokument weg lassen.

Dokument ohne Dateiunterstützung

Wählen Sie die Datenbankoption Datenbankansicht des Anwendungs-Assistenten ohne Dateiunterstützung aus, wenn Sie keine Dokumentserialisierung benötigen. Das Dokument dient den folgenden nützlichen Zwecken:

  • Dies ist ein praktischer Ort zum Speichern eines - CRecordset Objekts.

    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) zeigt, unterstützt ein Dokument die Koordination der Ansichten.

    Wenn mehrere Ansichten die gleichen Daten anzeigen, können Sie die Memberfunktion verwenden, CDocument::UpdateAllViews um Aktualisierungen aller Ansichten zu koordinieren, wenn eine Ansicht die Daten ändert.

Sie verwenden diese Option in der Regel für einfache formularbasierte Anwendungen. Der Anwendungs-Assistent unterstützt automatisch eine komfortable 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 dokumentbezogenen Dateimenübefehle und die Dokumentserialisierung 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 die Serialisierungsfunktion des Dokuments beispielsweise 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 zu Datenbankeingabe/-ausgabe.

Der Anwendungs-Assistent unterstützt diese Option, aber Sie müssen den Code schreiben, der das Dokument serialisiert. Store serialisierte Informationen in Dokumentdaten-Membern.

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 präsentiert.

Datenbankunterstützung mit Benutzeroberfläche

Wenn Sie über eine Benutzeroberfläche verfügen (z. B. nicht über eine Konsolenbefehlszeilenschnittstelle), wird Ihre Anwendung direkt in den Clientbereich des Rahmenfensters und nicht in eine Ansicht geratet. Eine solche Anwendung verwendet nicht CRecordView, CFormViewoder CDialog für die Hauptoberfläche, sondern normalerweise für CDialog normale Dialoge.

Schreiben von Anwendungen ohne Dokumente

Da der Anwendungs-Assistent das Erstellen von Anwendungen ohne Dokumente nicht unterstützt, CWinAppmüssen Sie eine eigene von abgeleitete Klasse schreiben und bei Bedarf auch eine - oder CFrameWnd -Klasse CMDIFrameWnd erstellen. Überschreiben CWinApp::InitInstance und deklarieren Sie ein Anwendungsobjekt wie:

CYourNameApp theApp;

Das Framework stellt weiterhin den Nachrichtenzuordnungsmechanismus und viele andere Features zur Seite.

Datenbankunterstützung Getrennt vom Benutzeroberfläche

Einige Anwendungen benötigen keine oder nur eine minimale Benutzeroberfläche. Angenommen, Sie schreiben Folgendes:

  • Ein zwischengeschaltetes Datenzugriffsobjekt, das andere Anwendungen (Clients) für die spezielle Verarbeitung von Daten zwischen der Anwendung und der Datenquelle aufrufen.

  • Eine Anwendung, die Daten ohne Benutzereingriff verarbeitet, z. B. eine Anwendung, die Daten aus einem Datenbankformat in ein anderes verschiebt oder berechnungen und Batchaktualisierungen ausführt.

Da kein Dokument das Objekt besitzt CRecordset , möchten Sie es wahrscheinlich als eingebetteten Daten member in CWinAppIhrer von abgeleiteten Anwendungsklasse speichern. Zu den Alternativen gehören:

  • Ein permanentes Objekt wird CRecordset überhaupt nicht behalten. Sie können NULL an Ihre Recordsetklassenkonstruktoren übergeben. In diesem Fall erstellt das Framework mithilfe CDatabase der Informationen in der Memberfunktion des Recordsets ein temporäres GetDefaultConnect Objekt. Dies ist die wahrscheinlichste Alternative.

  • Das -Objekt CRecordset wird zu einer globalen Variablen. Diese Variable sollte ein Zeiger auf ein Recordsetobjekt sein, das Sie dynamisch in Ihrer Überschreibung CWinApp::InitInstance erstellen. Dadurch wird vermieden, dass versucht wird, das Objekt zu erstellen, bevor das Framework initialisiert wird.

  • Verwenden Sie Recordsetobjekte wie im Kontext eines Dokuments oder einer Sicht. Erstellen Sie Recordsets in den Memberfunktionen Ihrer Anwendungs- oder Framefensterobjekte.

Siehe auch

MFC-Datenbankklassen