Sdílet prostřednictvím


CDaoException – třída

Představuje podmínku výjimky vyplývající z databázových tříd MFC na základě objektů DAO (Data Access Object). DAO 3.6 je konečná verze a je považována za za zastaralou.

Syntaxe

class CDaoException : public CException

Členové

Veřejné konstruktory

Jméno popis
CDaoException::CDaoException CDaoException Vytvoří objekt.

Veřejné metody

Jméno popis
CDaoException::GetErrorCount Vrátí počet chyb v kolekci Chyb databázového stroje.
CDaoException::GetErrorInfo Vrátí informace o chybě konkrétního objektu chyby v kolekci Errors.

Veřejné datové členy

Jméno popis
CDaoException::m_nAfxDaoError Obsahuje rozšířený kód chyby pro všechny chyby v třídách MFC DAO.
CDaoException::m_pErrorInfo Ukazatel na objekt CDaoErrorInfo , který obsahuje informace o jednom objektu chyby DAO.
CDaoException::m_scode Hodnota SCODE přidružená k chybě.

Poznámky

Třída obsahuje veřejné datové členy, které můžete použít k určení příčiny výjimky. CDaoException objekty jsou sestaveny a vyvolány členskými funkcemi tříd databáze DAO.

Poznámka

Databázové třídy DAO se liší od databázových tříd MFC založených na Připojení ivity (ODBC). Všechny názvy databázových tříd DAO mají předponu CDao. Stále máte přístup ke zdrojům dat ODBC pomocí tříd DAO. Obecně platí, že třídy MFC založené na rozhraní DAO jsou schopny více než třídy MFC založené na rozhraní ODBC; třídy založené na rozhraní DAO mají přístup k datům, včetně prostřednictvím ovladačů ODBC, prostřednictvím vlastního databázového stroje. Třídy založené na DAO také podporují operace DDL (Data Definition Language), například přidávání tabulek prostřednictvím tříd, aniž by bylo nutné volat DAO přímo. Informace o výjimkách vyvolaných třídami ODBC naleznete v tématu CDBException.

K objektům výjimek v oboru výrazu CATCH můžete přistupovat. Objekty můžete také vyvolat CDaoException z vlastního kódu pomocí globální funkce AfxThrowDaoException .

V prostředí MFC jsou všechny chyby DAO vyjádřeny jako výjimky typu CDaoException. Když zachytíte výjimku tohoto typu, můžete pomocí CDaoException členských funkcí načíst informace z libovolných objektů chyb DAO uložených v kolekci Chyb databázového stroje. Při každém výskytu chyby se jeden nebo více objektů chyb umístí do kolekce Errors. (Kolekce obvykle obsahuje pouze jeden objekt chyby. Pokud používáte zdroj dat ODBC, pravděpodobně se zobrazí více chybových objektů.) Pokud jiná operace DAO vygeneruje chybu, kolekce Errors se vymaže a nový objekt chyby se umístí do kolekce Errors. Operace DAO, které negenerují chybu, nemají žádný vliv na kolekci Errors.

Kódy chyb DAO najdete v souboru DAOERR.H. Související informace najdete v tématu Chyby zachycení přístupu k datům v nápovědě k dao.

Další informace o zpracování výjimek obecně nebo o CDaoException objektech naleznete v článcích Zpracování výjimek (MFC) a Výjimky: Výjimky databáze. Druhý článek obsahuje ukázkový kód, který znázorňuje zpracování výjimek v rozhraní DAO.

Hierarchie dědičnosti

Objekt CObject

CException

CDaoException

Požadavky

Hlavička: afxdao.h

CDaoException::CDaoException

CDaoException Vytvoří objekt.

CDaoException();

Poznámky

Rozhraní obvykle vytváří objekty výjimky, když jeho kód vyvolá výjimku. Zřídka je nutné explicitně vytvořit objekt výjimky. Pokud chcete vyvolat výjimku z vlastního CDaoException kódu, zavolejte globální funkci AfxThrowDaoException.

Objekt výjimky však můžete chtít explicitně vytvořit, pokud provádíte přímá volání rozhraní DAO prostřednictvím ukazatelů rozhraní DAO, které třídy MFC zapouzdřují. V takovém případě může být potřeba načíst informace o chybách z DAO. Předpokládejme, že při volání metody DAO prostřednictvím rozhraní DAODatabases do kolekce Databases pracovního prostoru dojde k chybě.

Načtení informací o chybě DAO
  1. Vytvoření objektu CDaoException

  2. Voláním členské funkce GetErrorCount objektu výjimky určete, kolik chyb objektů je v kolekci Chyb databázového stroje. (Obvykle pouze jeden, pokud nepoužíváte zdroj dat ODBC.)

  3. Voláním členské funkce GetErrorInfo objektu výjimky načtěte jeden konkrétní chybový objekt najednou indexem v kolekci prostřednictvím objektu výjimky. Objekt výjimky si můžete představit jako proxy pro jeden objekt chyby DAO.

  4. Prozkoumejte aktuální strukturu CDaoErrorInfo, která GetErrorInfo se vrátí v m_pErrorInfo datovém členu. Její členové poskytují informace o chybě DAO.

  5. V případě zdroje dat ODBC podle potřeby opakujte kroky 3 a 4, aby se zobrazily další chybové objekty.

  6. Pokud jste vytvořili objekt výjimky v haldě, odstraňte ho pomocí operátoru delete po dokončení.

Další informace o zpracování chyb v třídách rozhraní MFC DAO naleznete v článku Výjimky: Výjimky databáze.

CDaoException::GetErrorCount

Voláním této členské funkce načtěte počet objektů chyb DAO v kolekci Chyb databázového stroje.

short GetErrorCount();

Vrácená hodnota

Počet objektů chyby DAO v kolekci Chyb databázového stroje.

Poznámky

Tyto informace jsou užitečné pro procházení kolekce Errors k načtení každého z jednoho nebo více objektů chyby DAO v kolekci. Chcete-li načíst objekt chyby indexem nebo číslem chyby DAO, zavolejte funkci GetErrorInfo člena.

Poznámka

Obvykle existuje pouze jeden objekt chyby v kolekci Errors. Pokud ale pracujete se zdrojem dat ODBC, může existovat více než jeden zdroj dat.

CDaoException::GetErrorInfo

Vrátí informace o chybě konkrétního objektu chyby v kolekci Errors.

void GetErrorInfo(int nIndex);

Parametry

nIndex
Index informací o chybě v kolekci Chyb databázového stroje pro vyhledávání podle indexu.

Poznámky

Voláním této členské funkce získáte následující typy informací o výjimce:

  • Kód chyby

  • Source

  • Popis

  • Soubor nápovědy

  • Kontext nápovědy

GetErrorInfo uloží informace v datovém členu objektu m_pErrorInfo výjimky. Stručný popis vrácených informací najdete v m_pErrorInfo. Pokud zachytíte výjimku typu CDaoException vyvolané prostředím MFC, m_pErrorInfo člen už bude vyplněn. Pokud se rozhodnete volat DAO přímo, musíte volat členskou GetErrorInfo funkci objektu výjimky sami vyplnit m_pErrorInfo. Podrobnější popis naleznete ve struktuře CDaoErrorInfo .

Informace o výjimkách DAO a ukázkovém kódu najdete v článku Výjimky: Výjimky databáze.

CDaoException::m_nAfxDaoError

Obsahuje rozšířený kód chyby MFC.

Poznámky

Tento kód se dodává v případech, kdy došlo k chybě konkrétní součásti tříd rozhraní MFC DAO.

Možné hodnoty jsou:

  • NO_AFX_DAO_ERROR Poslední operace neměla za následek rozšířenou chybu MFC. Operace ale mohla znamenat jiné chyby z rozhraní DAO nebo OLE, takže byste měli zkontrolovat m_pErrorInfo a případně m_scode.

  • AFX_DAO_ERROR_ENGINE_INITIALIZATION mfc nemohl inicializovat databázový stroj Microsoft Jet. Ole se pravděpodobně nepodařilo inicializovat nebo mohlo být nemožné vytvořit instanci objektu databázového stroje DAO. Tyto problémy obvykle naznačují špatnou instalaci rozhraní DAO nebo OLE.

  • AFX_DAO_ERROR_DFX_BIND Adresa použitá ve volání funkce DFX (DaO Record Field Exchange) neexistuje nebo je neplatná (adresa nebyla použita k vytvoření vazby dat). V volání DFX jste možná předali špatnou adresu nebo se adresa mezi operacemi DFX stala neplatnou.

  • AFX_DAO_ERROR_OBJECT_NOT_OPEN Pokusili jste se otevřít sadu záznamů na základě dotazu nebo objektu tabledef, který nebyl v otevřeném stavu.

CDaoException::m_pErrorInfo

Obsahuje ukazatel na CDaoErrorInfo strukturu, která poskytuje informace o objektu chyby DAO, který jste naposledy načetli voláním GetErrorInfo.

Poznámky

Tento objekt obsahuje následující informace:

CDaoErrorInfo – člen Informační Význam
m_lErrorCode Kód chyby Kód chyby DAO
m_strSource Source Název objektu nebo aplikace, která původně vygenerovala chybu
m_strDescription Popis Popisný řetězec přidružený k chybě
m_strHelpFile Soubor nápovědy Cesta k souboru nápovědy systému Windows, ve kterém může uživatel získat informace o problému
m_lHelpContext Kontext nápovědy ID kontextu tématu v souboru nápovědy DAO

Úplné podrobnosti o informacích obsažených v objektu CDaoErrorInfo naleznete v CDaoErrorInfo struktury.

CDaoException::m_scode

Obsahuje hodnotu typu SCODE , která popisuje chybu.

Poznámky

Toto je kód OLE. Tuto hodnotu budete muset používat jen zřídka, protože v téměř všech případech jsou v ostatních CDaoException datových členech k dispozici konkrétnější informace o chybách MFC nebo DAO.

Informace o SCODE naleznete v tématu Struktura kódů chyb OLE v sadě Windows SDK. Datový typ SCODE se mapuje na datový typ HRESULT.

Viz také

CException – třída
Graf hierarchie
CException – třída