Sdílet prostřednictvím


TN055: Migrace aplikací databázové třídy MFC rozhraní ODBC do tříd MFC rozhraní DAO

[!POZNÁMKA]

Tak jako jazyk Visual C++ .NET, tak taky prostředí a průvodci jazyka Visual C++ nepodporují rozhraní DAO (přestože třídy rozhraní DAO jsou zahrnuty a lze je stále použít).Společnost Microsoft doporučuje používat Šablon technologie OLE DB nebo rozhraní ODBC a knihovna MFC pro nové projekty.Měli by jste používat pouze rozhraní DAO pro údržbu existujících aplikací.

Přehled

V mnoha situacích může být vhodné k migraci aplikací, které používají databázové třídy knihovny MFC pro třídy databáze knihovny MFC rozhraní DAO.Tato technická poznámka uvede podrobnosti většina rozdílů mezi třídami knihovny MFC rozhraní ODBC a DAO.S rozdíly v úvahu by neměl být příliš obtížné přenést aplikace z třídy rozhraní ODBC s třídami knihovny MFC podle potřeby.

Proč migrace z rozhraní ODBC na rozhraní DAO?

Existuje několik důvodů, proč můžete chtít přenést databázové třídy rozhraní DAO aplikací ze třídy databáze rozhraní ODBC, ale rozhodnutí není nutně jednoduché a zřejmé.Mějte na paměti jednu věc je, že databázový stroj Microsoft Jet, který používá rozhraní DAO můžete číst libovolný zdroj dat ODBC, pro který máte ovladač rozhraní ODBC.Může být výhodnější použít databázové třídy rozhraní ODBC nebo přímo sami, ale databázový stroj Microsoft Jet může číst ODBC data volání rozhraní ODBC.

Některé jednoduché případy, které rozhraní ODBC nebo rozhraní DAO rozhodování snadné.Například když potřebujete pouze přístup k datům ve formátu Microsoft Jet engine lze číst přímo (formát aplikace Access, Excel formátu a tak dále) je jasnou volbou použít databázové třídy rozhraní DAO.

Složitějších případech vznikají při dat existuje na serveru nebo na celou řadu různých serverů.V tomto případě rozhodnutí o použití třídy databáze ODBC nebo rozhraní DAO databázové třídy je obtížné.Pokud chcete provádět akce, jako jsou heterogenní spojení (spojení dat ze serverů v různých formátech, jako jsou SQL Server a Oracle), potom databázový stroj Microsoft Jet provede je spíše než k práci nezbytné použít databázové třídy rozhraní ODBC nebo rozhraní ODBC volat přímo vynucení spojení.Pokud používáte ovladač ODBC, který podporuje ovladač kurzory, může být nejlepší volbou třídy databáze ODBC.

Volba může být komplikované, tak můžete napsat některé ukázkový kód při testování výkonu různým metodám zvláštními potřebami.Tato technická Poznámka předpokládá, že provedení rozhodnutí migrace z třídami databáze rozhraní ODBC s třídami databáze DAO.

Podobnost mezi třídami databáze rozhraní ODBC a databázové třídy knihovny MFC rozhraní DAO

Původní návrh tříd knihovny MFC rozhraní ODBC byla založena na modelu objektu DAO, která byla v aplikaci Microsoft Access a Microsoft Visual Basic.To znamená, že existuje mnoho společných funkcí třídy rozhraní ODBC a knihovna MFC rozhraní DAO, které bude všechny uvedena v této části.Modely programování obecně jsou stejné.

Chcete-li zvýraznit několik podobnosti:

  • Třídy rozhraní DAO i rozhraní ODBC mají databázových objektů, které spravují pomocí základního systému správy databáze (DBMS).

  • Mají oba objekty recordset představující sady výsledků vrácených z tohoto systému DBMS.

  • Objekty databáze a sady záznamů rozhraní DAO mají členové téměř shodné s třídami rozhraní ODBC.

  • Obě sady tříd je identické s výjimkou některých změn názvu objektu a člen kód, který chcete načíst data.Změny budou požadovýny, ale proces je obvykle jednoduché změnou při přepnutí z třídy rozhraní ODBC na rozhraní DAO třídy.

V obou modelech postup načítání dat je například vytvořit a otevřít databázový objekt, vytvořit a otevřít objekt sady záznamů a procházet (přesunout), některé operace data.

Rozdíly mezi rozhraní ODBC a tříd knihovny MFC rozhraní DAO

Třídy rozhraní DAO obsahují další objekty a rozsáhlejší sadu metod, ale v této části se uvede podrobnosti pouze rozdíly v podobných tříd a funkce.

Pravděpodobně nejobvyklejší rozdíly mezi třídami se změny názvu pro podobné třídy a globální funkce.Následující seznam uvádí změny názvů objektů, metod a globální funkce spojené s třídami databáze:

Třídy nebo funkce

Ekvivalent v třídách knihovny MFC rozhraní DAO

CDatabase

CDaoDatabase

CDatabase::ExecuteSQL

CDaoDatabase::Execute

CRecordset

CDaoRecordset

CRecordset::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-založené)

RFX_Text

DFX_Text

RFX_Binary

DFX_Binary

RFX_LongBinary

DFX_LongBinary

* Na RFX_Date funkce je založena na CTime a TIMESTAMP_STRUCT z.

Hlavní změny funkcí, které mohou ovlivnit vaši aplikaci a vyžadují více než jednoduchý název změny jsou uvedeny níže.

  • Konstanty a makra použít k určení typu otevřete například záznamů a záznamů možnosti byly změněny.

    S třídami rozhraní ODBC knihovny MFC, potřebné k definování těchto možností prostřednictvím makra nebo typy výčtu.

    S třídami rozhraní DAO DAO poskytuje definici těchto možností v souboru hlaviček (DBDAOINT.H).Typ sady záznamů je tedy ve výčtu člen CRecordset, ale s rozhraním DAO je konstanta místo.Například můžete použít snímek při určování typu CRecordset v rozhraní ODBC, ale DB_OPEN_SNAPSHOT při určování typu CDaoRecordset.

  • Výchozí typ sady záznamů pro CRecordset je snímek při výchozí typ sady záznamů pro CDaoRecordset je Dynamická sada (viz poznámka níže další problém o snímcích třídy rozhraní ODBC).

  • Rozhraní ODBC CRecordset třídy je možné vytvořit typ dopředné sady záznamů.V CDaoRecordset třídy, pouze pro předávání není typ sady záznamů, ale spíše vlastnosti (nebo možnost) určitých typů záznamů.

  • Připojovacím sady záznamů při otevření CRecordset objektu znamenalo, že sadu záznamů dat může číst a připojena.S CDaoRecordset objektu, možnost připojovacím doslova znamená, že data v sadě záznamů může být pouze připojena (a ne číst).

  • Funkce členů třídy rozhraní ODBC transakci jsou členy CDatabase a působit na úroveň databáze.V třídách rozhraní DAO funkce členů transakce jsou členy třídy vyšší úrovně (CDaoWorkspace) a tedy může mít vliv na více CDaoDatabase objekty sdílení stejného pracovního prostoru (místo transakce).

  • Třída výjimek byl změněn.CDBExceptions jsou vyvolány tříd rozhraní ODBC a CDaoExceptions v třídách rozhraní DAO.

  • RFX_Datepoužívá CTime a TIMESTAMP_STRUCT z objekty při DFX_Date používá COleDateTime.COleDateTime Je téměř shodné s CTime, ale je založen na 8bajtových OLE Datum místo 4 bajtů time_t tak může pojmout mnohem větší rozsah data.

    [!POZNÁMKA]

    Rozhraní DAO (CDaoRecordset) jsou snímky jen pro čtení při ODBC (CRecordset) snímků může být v závislosti na použití knihovny kurzorů rozhraní ODBC a ovladač aktualizovat.Pokud používáte knihovnu kurzorů, CRecordset jsou aktualizovatelné snímky.Pokud používáte některý z ovladačů Microsoft Desktop Driver Pack 3.0 bez knihovny kurzorů rozhraní ODBC, CRecordset snímky jsou jen pro čtení.Používáte-li jiný ovladač, naleznete v dokumentaci ovladače a zjistěte, zda snímky (STATIC_CURSORS) jsou určeny jen pro čtení.

Viz také

Další zdroje

Technické poznámky podle čísel

Technické poznámky podle kategorií