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).
Poznámka:
Objekt pro přístup k datům (DAO) se podporuje prostřednictvím Office 2013. DAO 3.6 je konečná verze a je zastaralá.
Syntaxe
class CDaoException : public CException
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CDaoException::CDaoException | CDaoException Vytvoří objekt. |
Veřejné metody
Název | 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
Název | 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 rozhraní ODBC (Open Database Connectivity). 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. (Obvykle kolekce obsahuje pouze jeden chybový objekt. 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
CDaoException
Požadavky
Záhlaví: 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
Vytvoření objektu
CDaoException
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.)
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.
Prozkoumejte aktuální strukturu CDaoErrorInfo, která
GetErrorInfo
se vrátí v m_pErrorInfo datovém členu. Její členové poskytují informace o chybě DAO.V případě zdroje dat ODBC podle potřeby opakujte kroky 3 a 4, aby se zobrazily další chybové objekty.
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();
Návratová 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 (Record Field Exchange) daO 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 |
Zdroj | 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 je 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.