Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
DaO jest używany z bazami danych programu Access i jest obsługiwany za pośrednictwem pakietu Office 2013. DaO 3.6 jest wersją ostateczną i jest uważany za przestarzałą. Środowisko i kreatory języka Visual C++ nie obsługują dao (chociaż klasy DAO są uwzględnione i nadal można ich używać). Firma Microsoft zaleca używanie szablonów OLE DB lub ODBC i MFC dla nowych projektów. W przypadku obsługi istniejących aplikacji należy używać tylko dao.
Omówienie
W wielu sytuacjach może być pożądane migrowanie aplikacji korzystających z klas baz danych ODBC MFC do klas baz danych DAO MFC. Ta uwaga techniczna szczegółowo opisuje większość różnic między klasami MFC ODBC i DAO. Mając na uwadze różnice, nie należy zbyt trudno migrować aplikacje z klas ODBC do klas MFC w razie potrzeby.
Dlaczego warto przeprowadzić migrację z ODBC do DAO
Istnieje wiele powodów, dla których warto migrować aplikacje z klas baz danych ODBC do klas baz danych DAO, ale decyzja nie musi być prosta ani oczywista. Należy pamiętać, że aparat bazy danych Microsoft Jet używany przez DAO może odczytywać dowolne źródło danych ODBC, dla którego masz sterownik ODBC. Bardziej wydajne może być użycie klas baz danych ODBC lub wywołanie odBC bezpośrednio, ale aparat bazy danych Microsoft Jet może odczytywać dane ODBC.
Niektóre proste przypadki, które sprawiają, że decyzja ODBC/DAO jest łatwa. Jeśli na przykład potrzebujesz tylko dostępu do danych w formacie, który aparat Microsoft Jet może odczytać bezpośrednio (format programu Access, format programu Excel itd.), oczywistym wyborem jest użycie klas bazy danych DAO.
Bardziej złożone przypadki występują, gdy dane istnieją na serwerze lub na różnych serwerach. W takim przypadku decyzja o użyciu klas bazy danych ODBC lub klas bazy danych DAO jest trudna. Jeśli chcesz wykonywać takie czynności, jak sprzężenia heterogeniczne (sprzężenia danych z serwerów w wielu formatach, takich jak SQL Server i Oracle), aparat bazy danych Microsoft Jet wykona sprzężenie dla Ciebie, zamiast wymuszać wykonywanie pracy niezbędnej w przypadku użycia klas baz danych ODBC lub bezpośredniego wywołania ODBC. Jeśli używasz sterownika ODBC obsługującego kursory sterowników, najlepszym wyborem mogą być klasy bazy danych ODBC.
Wybór może być skomplikowany, dlatego warto napisać przykładowy kod w celu przetestowania wydajności różnych metod, biorąc pod uwagę specjalne potrzeby. Ta uwaga techniczna zakłada, że podjęto decyzję o migracji z klas 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ł oparty na modelu obiektów DAO, który był używany w programie Microsoft Access i Microsoft Visual Basic. Oznacza to, że istnieje wiele typowych funkcji klas ODBC i DAO MFC, które nie zostaną wymienione w tej sekcji. Ogólnie rzecz biorąc, modele programowania są takie same.
Aby wyróżnić kilka podobieństw:
Klasy ODBC i DAO mają obiekty bazy danych, które zarządzają przy użyciu bazowego systemu zarządzania bazami danych (DBMS).
Oba mają obiekty zestawu rekordów reprezentujące zestaw wyników zwróconych z tego systemu DBMS.
Obiekty bazy danych i zestawów rekordów dao mają elementy członkowskie niemal identyczne z klasami ODBC.
W przypadku obu zestawów klas kod pobierania danych jest identyczny, z wyjątkiem niektórych zmian nazw obiektów i składowych. Zmiany będą wymagane, ale zwykle proces jest prostą zmianą nazwy podczas przełączania z klas ODBC do klas DAO.
Na przykład w obu modelach procedura pobierania danych polega na utworzeniu i otwarciu obiektu bazy danych, utworzeniu i otwarciu obiektu zestawu rekordów, a następnie nawigowaniu (przenoszenie) danych wykonujących jakąś operację.
Różnice między klasami ODBC i DAO MFC
Klasy DAO zawierają więcej obiektów i bogatszy zestaw metod, ale ta sekcja zawiera tylko szczegółowe informacje o różnicach w podobnych klasach i funkcjach.
Prawdopodobnie najbardziej oczywiste różnice między klasami to zmiany nazw podobnych klas i funkcji globalnych. Na poniższej liście przedstawiono zmiany nazw obiektów, metod i funkcji globalnych skojarzonych z klasami baz danych:
Klasa lub funkcja | Odpowiednik w klasach 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 1 |
DFX_Date (COleDateTime oparte) |
RFX_Text |
DFX_Text |
RFX_Binary |
DFX_Binary |
RFX_LongBinary |
DFX_LongBinary |
1 Funkcja RFX_Date
jest oparta na elementach CTime
i TIMESTAMP_STRUCT
.
Poniżej wymieniono główne zmiany funkcji, które mogą mieć wpływ na aplikację i wymagają więcej niż prostych zmian nazw.
Stałe i makra używane do określania elementów, takich jak typ otwierania zestawu rekordów i opcje otwierania zestawu rekordów, zostały zmienione.
W przypadku klas ODBC MFC potrzebnych do zdefiniowania tych opcji za pomocą makr lub wyliczonych typów.
W przypadku klas DAO dao udostępnia definicję tych opcji w pliku nagłówkowym (DBDAOINT). H). W związku z tym typ zestawu rekordów jest wyliczonym elementem członkowskim
CRecordset
, ale w przypadku daO jest to stała. Można na przykład użyć migawki podczas określania typuCRecordset
odBC, ale DB_OPEN_SNAPSHOT podczas określaniaCDaoRecordset
typu .Domyślny typ
CRecordset
zestawu rekordów dla parametru to migawka , podczas gdy domyślny typ zestawu rekordów dlaCDaoRecordset
elementu to dynaset (zobacz poniższą notatkę, aby uzyskać dodatkowy problem dotyczący migawek klas ODBC).Klasa ODBC
CRecordset
ma możliwość utworzenia typu zestawu rekordów tylko do przekazywania.CDaoRecordset
W klasie tylko do przodu nie jest typem zestawu rekordów, ale raczej właściwością (lub opcją) niektórych typów zestawów rekordów.Zestaw rekordów tylko do dołączania podczas otwierania
CRecordset
obiektu oznacza, że dane zestawu rekordów mogą być odczytywane i dołączane. W przypadkuCDaoRecordset
obiektu opcja tylko do dołączania oznacza dosłownie, że dane zestawu rekordów można dołączać tylko (a nie odczytywać).Funkcje składowe transakcji klasy ODBC są elementami
CDatabase
członkowskimi i działają na poziomie bazy danych. W klasach DAO funkcje składowe transakcji są elementami członkowskimi klasy wyższego poziomu (CDaoWorkspace
), co może mieć wpływ na wieleCDaoDatabase
obiektów współużytkujących ten sam obszar roboczy (przestrzeń transakcji).Klasa wyjątków została zmieniona.
CDBExceptions
są zgłaszane w klasach ODBC iCDaoExceptions
w klasach DAO.RFX_Date
używa obiektówCTime
iTIMESTAMP_STRUCT
podczasDFX_Date
korzystania z elementuCOleDateTime
. ObiektCOleDateTime
jest prawie identyczny zCTime
elementem , ale jest oparty na 8-bajtowej dacie OLE, a nie na 4 bajtach time_t, dzięki czemu może przechowywać znacznie większy zakres danych.Uwaga
Migawki dao () są tylko do odczytu, podczas gdy migawki ODBC (
CDaoRecordset
CRecordset
) mogą być aktualizowane w zależności od sterownika i korzystania z biblioteki kursorów ODBC. Jeśli używasz biblioteki kursorów,CRecordset
migawki można aktualizować. Jeśli używasz dowolnego ze sterowników firmy Microsoft z pakietu Desktop Driver Pack 3.0 bez biblioteki kursorów ODBC,CRecordset
migawki są tylko do odczytu. Jeśli używasz innego sterownika, sprawdź dokumentację sterownika, aby sprawdzić, czy migawki (STATIC_CURSORS
) są tylko do odczytu.
Zobacz też
Uwagi techniczne według numerów
Uwagi techniczne według kategorii