Udostępnij za pośrednictwem


TN055: Migrowanie aplikacji bazy danych MFC ODBC do klas MFC DAO

[!UWAGA]

W Visual C++.NET, środowiska Visual C++ i kreatorzy już obsługiwać DAO (chociaż klasy DAO są włączone i nadal można ich użyć).Firma Microsoft zaleca użycie Szablonów OLE DB lub ODBC i MFC dla nowych projektów.Utrzymania istniejących aplikacji, należy używać tylko obiektów DAO.

Omówienie

W wielu sytuacjach może być pożądane migracji aplikacji, które korzystają z klasami baz danych ODBC MFC firmy do klas bazy danych DAO MFC firmy.Uwaga techniczna, to będzie szczegółowo większość różnic między klas MFC ODBC i obiektów DAO.Różnice w uwadze nie należy zbyt trudne do migracji aplikacji z klas ODBC do klas MFC, w razie potrzeby.

Dlaczego migracji ODBC do DAO?

Istnieje wiele powodów dlaczego warto migracji aplikacji z klasami baz danych ODBC do klas bazy danych DAO, ale decyzji nie jest koniecznie proste lub oczywiste.Jedną czynność, należy pamiętać o jest że aparatu bazy danych Microsoft Jet, używany przez DAO mogą odczytywać dowolne źródła danych ODBC, do którego masz sterownik ODBC.Może być bardziej efektywne użycie klas bazy danych ODBC lub wywołanie ODBC bezpośrednio samodzielnie, ale aparatu bazy danych Microsoft Jet może odczytać danych ODBC.

Niektóre proste przypadki, które ułatwiają decyzji ODBC/DAO.Na przykład, gdy wystarczy tylko dostęp do danych w formacie, który aparatu Microsoft Jet można odczytać bezpośrednio (format programu Access, Excel, format i tak dalej) oczywistym wyborze jest użycie klasy bazy danych DAO.

Bardziej złożonych przypadkach powstają, gdy dane istnieje na serwerze lub na wielu różnych serwerów.W przypadku decyzji o użyciu klas bazy danych ODBC lub klasy bazy danych DAO jest trudne.Jeśli chcesz rzeczy podoba heterogenicznych sprzężenia (łączenie danych z serwerów w wielu formatach, takich jak SQL Server i Oracle), a następnie aparatu bazy danych Microsoft Jet sprzężenie zostanie wykonane możesz zamiast zmusza użytkowników do pracy niezbędne używanych klas bazy danych ODBC lub bezpośrednio o nazwie ODBC.Jeśli używasz sterownika ODBC, obsługującego sterownik kursory, najlepszym rozwiązaniem może być klasami baz danych ODBC.

Wybór może być skomplikowany, należy więc pisać przykładowy kod do testowania wydajności różnych metod, biorąc pod uwagę szczególnych potrzeb.Ten Uwaga techniczna zakłada wprowadzone decyzją migrację z klasami baz danych ODBC do klas bazy danych DAO.

Podobieństwa między klasami baz danych ODBC i klasy bazy danych MFC DAO

Oryginalny projekt klas MFC ODBC była oparta na modelu obiektów DAO, które były używane w programie Microsoft Access i Microsoft Visual Basic.Oznacza to, że są wiele typowych funkcji klas ODBC i DAO MFC, które będą nie wszystkie wymienione w tej sekcji.Ogólnie rzecz biorąc modele programowania są takie same.

Aby podświetlić kilka podobieństw:

  • Zarówno ODBC DAO mają i obiektów bazy danych, które są zarządzane przy użyciu podstawowej systemu zarządzania bazą danych (DBMS).

  • Mają obiekty recordset reprezentujących zestaw wyników zwróconych z tego systemu DBMS.

  • Obiekty bazy danych i zestawu rekordów DAO mają prawie identyczne z klas ODBC członków.

  • Z obu zestawów klas kodu do pobierania danych jest identyczne, z wyjątkiem niektóre zmiany nazwy obiektu i elementu członkowskiego.Zmiany będą wymagane, ale zazwyczaj proces jest zmiana nazwy prostego podczas przełączania z klas ODBC do klas obiektów DAO.

Na przykład w obu modeli procedury do pobierania danych jest do tworzenia i otworzyć obiekt bazy danych, Utwórz i otwiera obiekt recordset i poruszać (Przenieś) danych, wykonywania niektórych operacji.

Różnice między ODBC i klas DAO MFC

Klasy DAO zawierać więcej obiektów i bogatszy zestaw metod, ale ta sekcja będzie szczegółowo tylko różnice w podobnych klasy i funkcje.

Prawdopodobnie najbardziej oczywiste różnice między klasami są zmiany nazw klas podobne i funkcje globalne.Na poniższej liście przedstawiono zmiany nazw obiektów, metod i globalne funkcje skojarzone z klasami baz danych:

Klasa lub funkcji

Odpowiednik klas MFC 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-oparte)

RFX_Text

DFX_Text

RFX_Binary

DFX_Binary

RFX_LongBinary

DFX_LongBinary

* RFX_Date Funkcja jest oparta na CTime i TIMESTAMP_STRUCT.

Poniżej wymieniono zasadnicze zmiany funkcjonalne, które mogą wpływać na aplikacji i wymagają więcej niż prosta nazwa zmian.

  • Stałe i makra pozwala określić elementy, takie jak zestaw rekordów, otwórz typu i zestawu rekordów, Otwórz okno Opcje zostały zmienione.

    Z klas ODBC MFC wymagane do zdefiniowania tych opcji za pomocą makra lub typy wyliczane.

    W przypadku klas obiektów DAO DAO zawiera definicję tych opcji w pliku nagłówka (DBDAOINT.H).Zatem typ zestawu rekordów jest wyliczany członka CRecordset, ale z DAO jest stała zamiast.Na przykład można użyć Migawka podczas określania typu CRecordset w ODBC, ale DB_OPEN_SNAPSHOT podczas określania typu CDaoRecordset.

  • Domyślny typ zestawu rekordów dla CRecordset jest Migawka podczas domyślny typ zestawu rekordów dla CDaoRecordset jest dynamiczny (patrz uwaga poniżej problemu dodatkowych dotyczących migawek klasy ODBC).

  • ODBC CRecordset klasa ma możliwość utworzenia typu rekordów.W CDaoRecordset klasy, tylko przesyłanie dalej nie jest typu zestawu rekordów, ale raczej właściwości (lub opcji) niektórych typów zestawów rekordów.

  • Dołączanie rekordów podczas otwierania CRecordset obiektu oznaczało, że dane w zestawie rekordów może odczytywać i dołączane.Z CDaoRecordset obiektu tylko Dołącz opcję dosłownie oznacza, że dane w zestawie rekordów może być tylko dołączane (i nie odczytać).

  • Funkcje składowe transakcji klas ODBC są członkami CDatabase i działać na poziomie bazy danych.W klasach DAO funkcji elementów członkowskich transakcji są członkami wyższy poziom klasy (CDaoWorkspace) i dlatego może wpływać wiele CDaoDatabase obiektów udostępnianie na tym samym obszarze roboczym (miejsce transakcji).

  • Klasa wyjątków został zmieniony.CDBExceptions są generowane w klasach ODBC i CDaoExceptions klas obiektów DAO.

  • RFX_Dateużywa CTime i TIMESTAMP_STRUCT obiektów podczas DFX_Date używa COleDateTime.COleDateTime Jest niemal identyczny jak CTime, ale opiera się na OLE 8-bajtowe daty zamiast 4-bajtowe time_t , może on pomieścić dużo większy zakres danych.

    [!UWAGA]

    DAO (CDaoRecordset) migawki są tylko do odczytu podczas ODBC (CRecordset) migawek można aktualizować w zależności od sterowników i wykorzystania Biblioteka kursorów ODBC.Jeśli używasz Biblioteka kursorów CRecordset migawki są aktualizowalne.Jeśli używasz żadnego ze sterownikami Microsoft Desktop Driver Pack 3.0 bez Biblioteka kursorów ODBC CRecordset migawki są tylko do odczytu.Jeśli używasz innego sterownika, sprawdź dokumentację kierowcy czy migawek (STATIC_CURSORS) są tylko do odczytu.

Zobacz też

Inne zasoby

Uwagi techniczne przez liczbę

Uwagi techniczne według kategorii