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:
Schreiben einer formularbasierten Anwendung mithilfe eines
CRecordView
Objekts als Standard Ansicht in Ihrem DokumentVerwenden von Recordset-Objekten in Ihren Dokumenten und Ansichten
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 einCDatabase
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 einCDatabase
Objekt zu erstellen und zu öffnen. Die Assistenten implementierenGetDefaultConnect
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 einCDatabase
Objekt darin.Das
CDatabase
Objekt verwaltet eine Verbindung mit Ihrer Datenquelle. Das Objekt wird während der Dokumenterstellung automatisch erstellt, und Sie rufen dieOpen
Memberfunktion auf, wenn Sie das Dokument initialisieren. Wenn Sie Recordset-Objekte in Dokumentelementfunktionen erstellen, übergeben Sie einen Zeiger auf das Objekt desCDatabase
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 CFormView
CRecordView
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.