Klasa CDaoException
Reprezentuje warunek wyjątku wynikający z klas baz danych MFC opartych na obiektach dostępu do danych (DAO).
Uwaga
Obiekt dostępu do danych (DAO) jest obsługiwany za pośrednictwem pakietu Office 2013. DaO 3.6 jest wersją ostateczną i jest przestarzała.
Składnia
class CDaoException : public CException
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CDaoException::CDaoException | CDaoException Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CDaoException::GetErrorCount | Zwraca liczbę błędów w kolekcji Errors aparatu bazy danych. |
CDaoException::GetErrorInfo | Zwraca informacje o błędzie dotyczące określonego obiektu błędu w kolekcji Errors. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CDaoException::m_nAfxDaoError | Zawiera rozszerzony kod błędu dla dowolnego błędu w klasach MFC DAO. |
CDaoException::m_pErrorInfo | Wskaźnik do obiektu CDaoErrorInfo , który zawiera informacje o jednym obiekcie błędu DAO. |
CDaoException::m_scode | Wartość SCODE skojarzona z błędem. |
Uwagi
Klasa zawiera publiczne składowe danych, których można użyć do określenia przyczyny wyjątku. CDaoException
obiekty są konstruowane i zgłaszane przez funkcje składowe klas baz danych DAO.
Uwaga
Klasy baz danych DAO różnią się od klas baz danych MFC opartych na technologii Open Database Connectivity (ODBC). Wszystkie nazwy klas bazy danych DAO mają prefiks "CDao". Nadal można uzyskiwać dostęp do źródeł danych ODBC za pomocą klas DAO. Ogólnie rzecz biorąc, klasy MFC oparte na DAO są bardziej zdolne niż klasy MFC oparte na ODBC; Klasy oparte na dao mogą uzyskiwać dostęp do danych, w tym za pośrednictwem sterowników ODBC, za pośrednictwem własnego aparatu bazy danych. Klasy oparte na dao obsługują również operacje języka Data Definition Language (DDL), takie jak dodawanie tabel za pośrednictwem klas bez konieczności bezpośredniego wywoływania obiektu DAO. Aby uzyskać informacje na temat wyjątków zgłaszanych przez klasy ODBC, zobacz CDBException.
Dostęp do obiektów wyjątków można uzyskać w zakresie wyrażenia CATCH . Możesz również zgłaszać CDaoException
obiekty z własnego kodu za pomocą funkcji globalnej AfxThrowDaoException .
W MFC wszystkie błędy DAO są wyrażane jako wyjątki typu CDaoException
. Po przechwyceniu wyjątku tego typu można użyć CDaoException
funkcji członkowskich, aby pobrać informacje z dowolnych obiektów błędów DAO przechowywanych w kolekcji Błędów aparatu bazy danych. W miarę wystąpienia każdego błędu co najmniej jeden obiekt błędu jest umieszczany w kolekcji Errors. (Zwykle kolekcja zawiera tylko jeden obiekt błędu; jeśli używasz źródła danych ODBC, prawdopodobnie wystąpi wiele obiektów błędów). Gdy inna operacja DAO generuje błąd, kolekcja Errors zostanie wyczyszczone, a nowy obiekt błędu zostanie umieszczony w kolekcji Errors. Operacje daO, które nie generują błędu, nie mają wpływu na kolekcję Errors.
Aby uzyskać informacje o kodach błędów DAOO, zobacz plik DAOERR.H. Aby uzyskać powiązane informacje, zobacz temat "Trappable Data Access Errors" (Błędy dostępu do danych uwięzionych) w pomocy dao.
Aby uzyskać więcej informacji na temat ogólnej obsługi wyjątków lub obiektów CDaoException
, zobacz artykuły Obsługa wyjątków (MFC) i Wyjątki: wyjątki bazy danych. Drugi artykuł zawiera przykładowy kod ilustrujący obsługę wyjątków w dao.
Hierarchia dziedziczenia
CDaoException
Wymagania
Nagłówek: afxdao.h
CDaoException::CDaoException
CDaoException
Tworzy obiekt.
CDaoException();
Uwagi
Zwykle struktura tworzy obiekty wyjątków, gdy jego kod zgłasza wyjątek. Rzadko trzeba jawnie skonstruować obiekt wyjątku. Jeśli chcesz zgłosić element CDaoException
z własnego kodu, wywołaj funkcję globalną AfxThrowDaoException.
Można jednak jawnie utworzyć obiekt wyjątku, jeśli wykonujesz bezpośrednie wywołania do daO za pośrednictwem wskaźników interfejsu DAO, które klasy MFC hermetyzują. W takim przypadku może być konieczne pobranie informacji o błędzie z dao. Załóżmy, że podczas wywoływania metody DAO za pośrednictwem interfejsu DAODatabases w kolekcji Databases obszaru roboczego występuje błąd.
Aby pobrać informacje o błędzie dao
Konstruowanie
CDaoException
obiektu.Wywołaj funkcję składową GetErrorCount obiektu wyjątku, aby określić, ile obiektów błędów znajduje się w kolekcji Errors aparatu bazy danych. (Zwykle tylko jedno, chyba że używasz źródła danych ODBC).
Wywołaj funkcję składową GetErrorInfo obiektu wyjątku, aby pobrać jeden konkretny obiekt błędu naraz przez indeks w kolekcji za pośrednictwem obiektu wyjątku. Obiekt wyjątku należy traktować jako serwer proxy dla jednego obiektu błędu DAO.
Sprawdź bieżącą strukturę CDaoErrorInfo , która
GetErrorInfo
zwraca element członkowski danych m_pErrorInfo . Jego członkowie dostarczają informacje na temat błędu DAO.W przypadku źródła danych ODBC powtórz kroki 3 i 4 zgodnie z potrzebami, aby uzyskać więcej obiektów błędów.
Jeśli utworzono obiekt wyjątku na stercie, usuń go z operatorem po zakończeniu
delete
.
Aby uzyskać więcej informacji na temat obsługi błędów w klasach MFC DAO, zobacz artykuł Wyjątki: wyjątki bazy danych.
CDaoException::GetErrorCount
Wywołaj tę funkcję składową, aby pobrać liczbę obiektów błędów DAO w kolekcji Errors aparatu bazy danych.
short GetErrorCount();
Wartość zwracana
Liczba obiektów błędów dao w kolekcji Errors aparatu bazy danych.
Uwagi
Te informacje są przydatne do pętli w kolekcji Errors w celu pobrania każdego z co najmniej jednego obiektu błędu DAO w kolekcji. Aby pobrać obiekt błędu według indeksu lub numeru błędu DAO, wywołaj funkcję składową GetErrorInfo .
Uwaga
Zwykle w kolekcji Errors znajduje się tylko jeden obiekt błędu. Jeśli jednak pracujesz ze źródłem danych ODBC, może istnieć więcej niż jeden.
CDaoException::GetErrorInfo
Zwraca informacje o błędzie dotyczące określonego obiektu błędu w kolekcji Errors.
void GetErrorInfo(int nIndex);
Parametry
nIndex
Indeks informacji o błędzie w kolekcji Błędy aparatu bazy danych dla wyszukiwania według indeksu.
Uwagi
Wywołaj tę funkcję składową, aby uzyskać następujące rodzaje informacji o wyjątku:
Kod błędu
Lokalizacja źródłowa
opis
Plik Pomocy
Kontekst pomocy
GetErrorInfo
przechowuje informacje w elemencie członkowskim danych obiektu wyjątku m_pErrorInfo
. Aby uzyskać krótki opis zwróconych informacji, zobacz m_pErrorInfo. W przypadku przechwycenia wyjątku typu CDaoException
zgłaszanego przez MFC m_pErrorInfo
element członkowski zostanie już wypełniony. Jeśli zdecydujesz się wywołać obiekt DAO bezpośrednio, musisz wywołać funkcję składową obiektu GetErrorInfo
wyjątku samodzielnie, aby wypełnić m_pErrorInfo
element . Aby uzyskać bardziej szczegółowy opis, zobacz strukturę CDaoErrorInfo .
Aby uzyskać informacje o wyjątkach DAO i przykładowym kodzie, zobacz artykuł Wyjątki: wyjątki bazy danych.
CDaoException::m_nAfxDaoError
Zawiera kod błędu rozszerzonego MFC.
Uwagi
Ten kod jest dostarczany w przypadkach, w których wystąpił błąd określonego składnika klas MFC DAO.
Dopuszczalne wartości:
NO_AFX_DAO_ERROR Ostatnia operacja nie powodowała błędu rozszerzonego MFC. Jednak operacja mogła wygenerować inne błędy z dao lub OLE, więc należy sprawdzić m_pErrorInfo i prawdopodobnie m_scode.
AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC nie może zainicjować aparatu bazy danych Microsoft Jet. Nie można zainicjować obiektu aparatu bazy danych DAO lub być może nie można było utworzyć wystąpienia obiektu aparatu bazy danych DAO. Te problemy zwykle sugerują nieprawidłową instalację dao lub OLE.
AFX_DAO_ERROR_DFX_BIND Adres używany w wywołaniu funkcji wymiany pól rekordów DAO (DFX) nie istnieje lub jest nieprawidłowy (adres nie został użyty do powiązania danych). Być może w wywołaniu DFX przekazano nieprawidłowy adres lub adres mógł zostać nieprawidłowy między operacjami dfX.
AFX_DAO_ERROR_OBJECT_NOT_OPEN Podjęto próbę otwarcia zestawu rekordów na podstawie definicji zapytania lub obiektu tabledef, który nie był w stanie otwartym.
CDaoException::m_pErrorInfo
Zawiera wskaźnik do CDaoErrorInfo
struktury, która zawiera informacje na temat obiektu błędu DAO, który został ostatnio pobrany przez wywołanie GetErrorInfo.
Uwagi
Ten obiekt zawiera następujące informacje:
Członek CDaoErrorInfo | Informacja | Znaczenie |
---|---|---|
m_lErrorCode |
Kod błędu | Kod błędu DAO |
m_strSource |
Źródło | Nazwa obiektu lub aplikacji, która pierwotnie wygenerowała błąd |
m_strDescription |
opis | Ciąg opisowy skojarzony z błędem |
m_strHelpFile |
Plik pomocy | Ścieżka do pliku Pomocy systemu Windows, w którym użytkownik może uzyskać informacje o problemie |
m_lHelpContext |
Kontekst pomocy | Identyfikator kontekstu tematu w pliku pomocy DAO |
Aby uzyskać szczegółowe informacje na temat informacji zawartych w CDaoErrorInfo
obiekcie, zobacz strukturę CDaoErrorInfo .
CDaoException::m_scode
Zawiera wartość typu SCODE
opisującego błąd.
Uwagi
Jest to kod OLE. Rzadko trzeba używać tej wartości, ponieważ w prawie wszystkich przypadkach bardziej szczegółowe informacje o błędach MFC lub DAO są dostępne w innych CDaoException
elementach członkowskich danych.
Aby uzyskać informacje o programie SCODE, zobacz temat Struktura kodów błędów OLE w zestawie Windows SDK. Typ danych SCODE jest mapowany na typ danych HRESULT.