Udostępnij za pośrednictwem


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

CObject

CException

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
  1. Konstruowanie CDaoException obiektu.

  2. 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).

  3. 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.

  4. 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.

  5. 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.

  6. 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_pErrorInfoelement . 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.

Zobacz też

Klasa CException
Wykres hierarchii