Übersicht
In vielen Situationen kann es wünschenswert sein, Anwendungen zu migrieren, die MFC ODBC-Datenbankklassen zu MFC DAO-Datenbankklassen verwenden. Diese technische Hinweis wird die meisten Unterschiede zwischen den MFC ODBC- und DAO-Klassen beschrieben. Mit den Unterschieden im Auge sollte es nicht allzu schwer aus den ODBC-Klassen die MFC-Klassen Migrieren von Anwendungen bei Bedarf sein.
Warum Migrieren von ODBC zu DAO?
Es gibt eine Reihe von Gründen, warum Sie können Anwendungen aus der ODBC-Datenbankklassen auf die DAO-Datenbankklassen migriert, aber die Entscheidung ist nicht unbedingt einfach oder offensichtlich. Lesen eine Sache im Auge zu behalten ist, dass das Microsoft Jet-Datenbankmodul, das von DAO verwendet wird, kann beliebige ODBC-Datenquelle Sie für die Sie einen ODBC-Treiber haben. Es ist möglicherweise effizienter, die ODBC-Datenbankklassen verwenden oder rufen Sie ODBC direkt selbst, aber die Microsoft Jet Datenbank Engine ODBC-Daten lesen kann.
Es gibt einige einfache Fälle, die die ODBC/DAO-Entscheidung erleichtern. Beispielsweise benötigen Wenn Sie nur Zugriff auf Daten in einem Format, das das Microsoft Jet-Datenbankmodul gelesen werden können, direkt (Access-Format, FoxPro, Format, Excel-Format und So weiter) die offensichtliche Wahl ist, verwenden Sie die DAO-Datenbankklassen.
Komplexere Fälle entstehen, wenn Ihre Daten auf einem Server oder auf einer Vielzahl von verschiedenen Servern vorhanden ist. In diesem Fall ist die Entscheidung, die ODBC-Datenbankklassen oder die DAO-Datenbankklassen verwenden ein schwieriges Thema. Wenn Sie möchten Dinge tun, wie heterogene Verknüpfungen (Join Daten in mehreren Formaten wie SQL Server und Oracle Server), dann das Microsoft Jet-Datenbankmodul führt die Verknüpfung für Sie anstelle zwingt Sie die notwendige Arbeit zu tun, wenn Sie die ODBC-Datenbankklassen verwendet oder ODBC direkt aufgerufen. Wenn Sie einen ODBC-Treiber, der Treiber Cursor unterstützt verwenden, könnte Ihre beste Wahl in die ODBC-Datenbankklassen.
Die Wahl kann kompliziert sein, so Sie einige Beispiel-Code zu testen, die Leistung der verschiedenen Methoden gegeben, Ihre speziellen Bedürfnisse zu schreiben möchten vielleicht. Diese technische Hinweis wird davon ausgegangen, dass Sie von der ODBC-Datenbankklassen auf die DAO-Datenbankklassen migriert entschieden haben.
Ähnlichkeiten zwischen ODBC-Datenbankklassen und MFC-DAO-Datenbankklassen
Der ursprüngliche Entwurf der MFC-ODBC-Klassen basiert auf das DAO-Objektmodell, die in Microsoft Access und Microsoft Visual Basic verwendet wurde. Dies bedeutet, dass es viele Gemeinsamkeiten die ODBC- und DAO-MFC-Klassen, die nicht alle in diesem Abschnitt aufgeführt werden. Im allgemeinen entsprechen die Programmiermodelle.
Ein paar Gemeinsamkeiten hervorheben:
Zum Beispiel ist in beiden Modellen das Verfahren zum Abrufen von Daten zu erstellen und Öffnen eines Datenbankobjekts, erstellen ein Recordset-Objekt öffnen und navigieren (verschieben) aber die Daten einiger Vorgänge durchführen.
Unterschiede zwischen ODBC und DAO-MFC-Klassen
Die DAO-Klassen sind weitere Objekte und einen umfangreicheren Satz von Methoden, sondern in diesem Abschnitt werden nur die Unterschiede in ähnlichen Klassen und Funktionen detail.
Wahrscheinlich sind die offensichtlichsten Unterschiede zwischen den Klassen der &Namensänderungen für ähnliche Klassen und globalen Funktionen. Die folgende Liste zeigt die Namen Änderungen Ofnbsp; die Objekte, Methoden und globale Funktionen verbunden mit den Datenbankklassen:
| Klasse oder Funktion | Gegenwert in MFC-DAO-Klassen |
| CDatabase | CDaoDatabase |
| CDatabase:: ExecuteSQL | CDaoDatabase::Execute |
| CRecordset | CDaoRecordset |
| GetDefaultConnect | CDaoRecordset::GetDefaultDBName |
| CFieldExchange | CDaoFieldExchange |
| RFX_Bool | DFX_Bool |
| RFX_Byte | DFX_Byte |
| RFX_Int | DFX_Short |
| RFX_Long | DFX_Long |
| DFX_Currency | |
| RFX_Single | DFX_Single |
| RFX_Double | DFX_Double |
| RFX_Date * | DFX_Date (COleDateTime-basiert) |
| RFX_Text | DFX_Text |
| RFX_Binary | DFX_Binary |
| RFX_LongBinary | DFX_LongBinary |
* Die Funktion RFX_Date basiert auf CTime und Typ TIMESTAMP_STRUCT.
Wichtigen Änderungen der Funktionalität können Ihre Anwendung beeinflussen und verlangen mehr als einfachen Namensänderungen sind unten aufgeführt.
MFC die ODBC-Klassen erforderlich, um diese Optionen über Makros definieren oder Typen aufgelistet.
DAO stellt mit den DAO-Klassen die Definition dieser Optionen in einer Header-Datei (DBDAOINT.H). so ist der Recordsettyp aufgezählten Mitglied von CRecordset, aber mit DAO ist es eine Konstante statt. Zum Beispiel würden Sie Snapshot verwenden, wenn Sie den Typ von CRecordset in ODBC aber DB_OPEN_SNAPSHOT angeben, bei der Angabe von CDaoRecordset.
Hinweis&Nbsp; DAO (CDaoRecordset) Snapshots sind schreibgeschützt, während ODBC (CRecordset) Snapshots je nach Treiber und Verwendung der ODBC-Cursorbibliothek aktualisiert werden können. Wenn Sie die Cursor-Bibliothek verwenden, sind CRecordset Snapshots aktualisiert werden. Wenn Sie eines der Microsoft-Treiber von Desktop Driver Pack 3.0 ohne die ODBC-Cursorbibliothek verwenden, sind die CRecordset -Snapshots schreibgeschützt. Wenn Sie eine andere Treiber verwenden, Überprüfen des Fahrers Dokumentation um festzustellen, ob Snapshots (STATIC_CURSORS) schreibgeschützt sind.
Technische Hinweise von &Nummer |nbsp; Technische Hinweise nach Kategorie