TN055: Migrowanie aplikacji klasy baz danych MFC ODBC do klas MFC DAO

Przegląd

W wielu sytuacjach może być pożądane migrowanie aplikacji, które wykorzystują MFC firmy ODBC bazy danych klas MFC firmy biblioteki zgodnooci DAO bazy danych klasy. Ta Uwaga techniczna będzie szczegółowo większość różnic między klas MFC ODBC i obiektów DAO. Z różnic w uwadze nie powinno być zbyt trudne do migracji aplikacji z klas ODBC do klas MFC, w razie potrzeby.

Dlaczego migracji z ODBC do DAO?

Istnieje szereg powodów dlaczego warto migracji aplikacji z klasami baz danych ODBC do klas bazy danych DAO, ale decyzja nie jest koniecznie proste lub oczywiste. Jedną rzeczą, którą należy pamiętać jest aparat bazy danych Microsoft Jet, który jest używany przez DAO można odczytać 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łać ODBC bezpośrednio samodzielnie, ale aparat bazy danych Microsoft Jet może odczytać danych ODBC.

Istnieją pewne proste przypadki, które ułatwiają decyzji ODBC/DAO. Na przykład, gdy tylko potrzebujesz dostępu do danych w formacie, który aparatu Microsoft Jet można odczytać bezpośrednio (format programu Access, FoxPro formatu, format programu Excel itd.) oczywistym wyborze jest użycie klasy bazy danych DAO.

Bardziej złożonych przypadkach powstają, gdy danych istnieje na serwerze lub na szereg różnych serwerów. W tym przypadku decyzja o wykorzystaniu klasy bazy danych ODBC lub klasy bazy danych DAO jest trudne. Jeśli chcesz wykonać rzeczy jak heterogenicznych sprzężenia (sprzężenie danych z serwerów w wielu formatach takich jak SQL Server i Oracle), a następnie aparat bazy danych Microsoft Jet będzie wykonywać sprzężenie możesz zamiast wymuszanie możesz zrobić niezbędnych prac, jeśli używane klasami baz danych ODBC lub bezpośrednio o nazwie ODBC. Jeśli używasz sterownika ODBC, który obsługuje sterownik kursory, najlepszym może być klasy bazy danych ODBC.

Wybór może być skomplikowane, więc warto Piszemy kod próbki do testowania wydajności różnych metod, biorąc pod uwagę szczególne potrzeby. Ta Uwaga techniczna zakłada, że dokonano decyzji o migracji z klasami baz danych ODBC do klas bazy danych DAO.

Podobieństwa między klasami baz danych ODBC i klasami baz 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 istnieje wiele cech wspólnych klas ODBC i DAO MFC, które zostaną nie wszystkie wymienione w niniejszej sekcji. Na ogół programowania modele są takie same.

Aby podświetlić kilka podobieństw:

Na przykład w przypadku obydwu modeli procedura pobierania danych jest do tworzenia i otworzyć obiektu bazy danych, Utwórz i otworzyć obiektu recordset i przejść (przenieś) Chociaż dane wykonywania niektórych operacji.

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

Klas obiektów DAO zawierać więcej obiektów i bogatszy zestaw metod, ale w tej sekcji tylko będzie szczegółowo 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 ofnbsp zmiany nazwy; obiekty, metody i funkcje globalne związane 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-systemem)
RFX_Text DFX_Text
RFX_Binary DFX_Binary
RFX_LongBinary DFX_LongBinary

* Funkcję RFX_Date opiera się 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.

  1. Stałe i makra służy do określania narządzi rekordów Otwórz typ i rekordów Otwórz opcje zostały zmienione.

    Z klasami ODBC MFC wymagane do zdefiniowania tych opcji za pomocą makra lub wyliczane typów.

    Z klas obiektów DAO DAO zawiera definicję tych opcji w pliku nagłówka (DBDAOINT.H). zatem typ rekordów jest wyliczany członkiem CRecordset, ale z DAO jest stała zamiast. Na przykład może używać migawki podczas określania typu CRecordset w ODBC, ale DB_OPEN_SNAPSHOT , określając typ CDaoRecordset.

  2. Domyślny typ zestawu rekordów dla CRecordset jest, migawkę podczas domyślny typ zestawu rekordów dla CDaoRecordset jest pobierany (patrz uwaga poniżej dodatkowe problemu o ODBC klasy migawek).

  3. Klasa ODBC CRecordset ma odpowiednią opcję, aby utworzyć typ rekordów tylko do przodu. W klasie CDaoRecordset tylko do przodu jest nie typ zestawu rekordów, ale raczej właściwości (lub opcji) niektórych rodzajów zestawy rekordów.

  4. Tylko do Dołączanie rekordów podczas otwierania obiektu CRecordset oznaczało, że dane w zestawie rekordów można odczytać i dołączane. Z obiektem CDaoRecordset , opcja tylko do dołączania oznacza dosłownie w zestawie rekordów danych może być tylko dołączone (a nie przeczytana).

  5. Funkcje składowe klasy ODBC transakcji są członkami CDatabase i ustawa o poziomie bazy danych. Klas obiektów DAO funkcje składowe transakcji są członkami wyższego poziomu klasy (CDaoWorkspace), a zatem może wpływać wiele obiektów CDaoDatabase udostępniania tego samego obszaru roboczego (miejsca na transakcję).

  6. Klasa wyjątek został zmieniony. CDBExceptions są generowane w klasach ODBC i CDaoExceptions do klas obiektów DAO.

  7. RFX_Date używa obiektów CTime i TIMESTAMP_STRUCT , natomiast DFX_Date COleDateTime. COleDateTime jest prawie identyczna z CTime, ale jest oparty na OLE 8-bajtowa daty , raczej niż 4-bajtowe time_t , więc może on pomieścić dużo większy zakres danych.

Uwaga   Migawki DAO (CDaoRecordset) są tylko do odczytu, podczas gdy migawek ODBC (CRecordset) może być niemożliwa w zależności od sterowników i wykorzystanie Biblioteka kursorów ODBC. Jeśli używasz Biblioteka kursorów, CRecordset migawek jest aktualizowalna. Jeśli używasz tych sterowników Microsoft Desktop Driver Pack 3.0 bez Biblioteka kursorów ODBC migawek CRecordset są przeznaczone tylko do odczytu. Jeśli używasz innego sterownika, sprawdź dokumentację kierowcy, aby sprawdzić, czy migawek (STATIC_CURSORS) są tylko do odczytu.

Uwagi techniczne przez liczbę |nbsp; Uwagi techniczne według kategorii

Index