MFC: Verwenden von Datenbankklassen mit Dokumenten und Ansichten

Sie können die MFC-Datenbankklassen mit oder ohne die Dokument-/Ansichtsarchitektur verwenden. In diesem Thema wird die Arbeit mit Dokumenten und Ansichten hervorgehoben. Es wird erläutert:

Alternativen finden Sie unter MFC: Verwenden von Datenbankklassen ohne Dokumente und Ansichten.

Schreiben einer formularbasierten Anwendung

Viele Datenzugriffsanwendungen basieren auf Formularen. Die Benutzeroberfläche ist ein Formular, das Steuerelemente enthält, in denen der Benutzer Daten untersucht, eingibt oder bearbeitet. Verwenden Sie die Klasse CRecordView, um das Anwendungsformular auf Basis zu gestalten. Wenn Sie den MFC-Anwendungs-Assistenten ausführen und den ODBC-Clienttyp auf der Seite "Datenbankunterstützung" auswählen, wird das Projekt für die Ansichtsklasse verwendetCRecordView.

In einer formularbasierten Anwendung speichert jedes Datensatzansichtsobjekt einen Zeiger auf ein CRecordset Objekt. Der Mechanismus für Datensatzfeldaustausch (RECORD Field Exchange, RFX) des Frameworks tauscht Daten zwischen dem Recordset und der Datenquelle aus. Der DDX-Mechanismus (Dialog Data Exchange) austauscht Daten zwischen den Felddatenmembern des Recordset-Objekts und den Steuerelementen im Formular. CRecordView Stellt außerdem Standardbefehlshandlerfunktionen zum Navigieren von Datensatz zu Datensatz im Formular bereit.

Informationen zum Erstellen einer formularbasierten Anwendung mit dem Anwendungs-Assistenten finden Sie unter Erstellen einer formularbasierten MFC-Anwendung und Datenbankunterstützung, MFC-Anwendungs-Assistent.

Eine vollständige Erläuterung von Formularen finden Sie unter "Datensatzansichten".

Verwenden von Recordsets in Dokumenten und Ansichten

Viele einfache formularbasierte Anwendungen benötigen keine Dokumente. Wenn Ihre Anwendung komplexer ist, möchten Sie wahrscheinlich ein Dokument als Proxy für die Datenbank verwenden und ein CDatabase Objekt speichern, das eine Verbindung mit der Datenquelle herstellt. Formularbasierte Anwendungen speichern in der Regel einen Zeiger auf ein Recordset-Objekt in der Ansicht. Andere Arten von Datenbankanwendungen speichern Recordsets und CDatabase Objekte im Dokument. Hier sind einige Möglichkeiten für die Verwendung von Dokumenten in Datenbankanwendungen:

  • Wenn Sie auf ein Recordset in einem lokalen Kontext zugreifen, erstellen Sie bei Bedarf ein CRecordset Objekt lokal in Memberfunktionen des Dokuments oder der Ansicht.

    Deklarieren Sie ein Recordset-Objekt als lokale Variable in einer Funktion. Übergeben Sie NULL an den Konstruktor, wodurch das Framework ein temporäres CDatabase Objekt für Sie erstellt und geöffnet hat. Übergeben Sie alternativ einen Zeiger an ein CDatabase Objekt. Verwenden Sie das Recordset innerhalb der Funktion, und lassen Sie es automatisch zerstört, wenn die Funktion beendet wird.

    Wenn Sie NULL an einen Recordsetkonstruktor übergeben, verwendet das Framework Informationen, die von der Memberfunktion des GetDefaultConnect Recordsets zurückgegeben werden, um ein CDatabase Objekt zu erstellen und zu öffnen. Die Assistenten implementieren GetDefaultConnect sie für Sie.

  • Wenn Sie während der Lebensdauer ihres Dokuments auf ein Recordset zugreifen, betten Sie ein oder CRecordset mehrere Objekte in Ihr Dokument ein.

    Erstellen Sie die Recordset-Objekte entweder beim Initialisieren des Dokuments oder bei Bedarf. Möglicherweise schreiben Sie eine Funktion, die einen Zeiger auf das Recordset zurückgibt, wenn sie bereits vorhanden ist oder erstellt wird, und öffnet das Recordset, wenn es noch nicht vorhanden ist. Schließen, löschen und erstellen Sie das Recordset nach Bedarf neu, oder rufen Sie die Requery Memberfunktion auf, um die Datensätze zu aktualisieren.

  • Wenn Sie während der Lebensdauer des Dokuments auf eine Datenquelle zugreifen, betten Sie ein CDatabase Objekt ein, oder speichern Sie einen Zeiger auf ein CDatabase Objekt darin.

    Das CDatabase Objekt verwaltet eine Verbindung mit Ihrer Datenquelle. Das Objekt wird während der Dokumenterstellung automatisch erstellt, und Sie rufen die Open Memberfunktion auf, wenn Sie das Dokument initialisieren. Wenn Sie Recordset-Objekte in Dokumentelementfunktionen erstellen, übergeben Sie einen Zeiger auf das Objekt des CDatabase Dokuments. Dies ordnet jedes Recordset der Datenquelle zu. Das Datenbankobjekt wird normalerweise zerstört, wenn das Dokument geschlossen wird. Die Recordset-Objekte werden in der Regel zerstört, wenn sie den Bereich einer Funktion verlassen.

Andere Faktoren

Formularbasierte Anwendungen haben häufig keine Verwendung für den Dokument serialisierungsmechanismus des Frameworks, daher können Sie die Befehle "Neu" und "Öffnen " im Menü "Datei " entfernen, deaktivieren oder ersetzen. Lesen Sie den Artikel Serialisierung: Serialisierung im Vergleich zur Datenbankeingabe/-ausgabe.

Sie können auch die vielen Möglichkeiten der Benutzeroberfläche nutzen, die das Framework unterstützen kann. Sie können z. B. mehrere CRecordView Objekte in einem Teilerfenster verwenden, mehrere Recordsets in verschiedenen untergeordneten Fenstern der Dokumentschnittstelle (MDI) öffnen usw.

Möglicherweise möchten Sie das Drucken aller Elemente in Ihrer Ansicht implementieren, ganz gleich, ob es sich um ein mit oder etwas anderes implementiertes CRecordView Formular handelt. Da von Klassen abgeleitete CFormViewCRecordView Klassen das Drucken nicht unterstützen, können Sie jedoch die OnPrint Memberfunktion außer Kraft setzen, um das Drucken zu ermöglichen. Weitere Informationen finden Sie unter Klasse CFormView.

Möglicherweise möchten Sie überhaupt keine Dokumente und Ansichten verwenden. Lesen Sie in diesem Fall MFC: Verwenden von Datenbankklassen ohne Dokumente und Ansichten.

Siehe auch

MFC-Datenbankklassen