Megosztás a következőn keresztül:


CDaoException osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Az adatelérési objektumokon (DAO) alapuló MFC-adatbázisosztályokból eredő kivételfeltételeket jelöli.

Megjegyzés:

Az Adatelérési objektum (DAO) az Office 2013-on keresztül támogatott. A DAO 3.6 a végleges verzió, és elavult.

Szemantika

class CDaoException : public CException

Tagok

Nyilvános konstruktorok

Név Description
CDaoException::CDaoException Egy CDaoException objektumot hoz létre.

Nyilvános metódusok

Név Description
CDaoException::GetErrorCount Az adatbázismotor hibagyűjteményében található hibák számát adja vissza.
CDaoException::GetErrorInfo Hibainformációkat ad vissza egy adott hibaobjektumról a Hibagyűjteményben.

Nyilvános adatok tagjai

Név Description
CDaoException::m_nAfxDaoError Kiterjesztett hibakódot tartalmaz az MFC DAO-osztályok hibáihoz.
CDaoException::m_pErrorInfo Egy CDaoErrorInfo objektumra mutató mutató, amely egy DAO-hibaobjektum adatait tartalmazza.
CDaoException::m_scode A hibához társított SCODE-érték .

Megjegyzések

Az osztály tartalmazza a kivétel okának meghatározásához használható nyilvánosadat-tagokat. CDaoException objektumokat a DAO-adatbázisosztályok tagfüggvényei építenek ki és dobnak ki.

Megjegyzés:

A DAO-adatbázisosztályok különböznek az MFC-adatbázisosztályoktól az Open Database Connectivity (ODBC) alapján. Minden DAO-adatbázisosztály neve rendelkezik a "CDao" előtaggal. A DAO-osztályokkal továbbra is elérheti az ODBC-adatforrásokat. Általánosságban elmondható, hogy a DAO-n alapuló MFC-osztályok jobban képesek, mint az ODBC-n alapuló MFC-osztályok; a DAO-alapú osztályok saját adatbázismotorjukon keresztül férhetnek hozzá az adatokhoz, beleértve az ODBC-illesztőprogramokat is. A DAO-alapú osztályok az adatdefiníciós nyelvi (DDL) műveleteket is támogatják, például táblákat adhatnak hozzá az osztályokon keresztül anélkül, hogy közvetlenül kellene meghívniuk a DAO-t. Az ODBC-osztályok által kidobott kivételekről további információt a CDBException című témakörben talál.

A kivételobjektumokat a CATCH kifejezés hatókörén belül érheti el. Az AfxThrowDaoException globális függvénnyel saját kódból is kidobhat CDaoException objektumokat.

Az MFC-ben az összes DAO-hiba kivételként, típusként CDaoExceptionvan kifejezve. Ha ilyen típusú kivételt észlel, a tagfüggvények használatával CDaoException adatokat kérdezhet le az adatbázismotor Hibagyűjteményében tárolt DAO-hibaobjektumokból. Minden hiba bekövetkezésekor egy vagy több hibaobjektum kerül a Hibagyűjteménybe. (A gyűjtemény általában csak egy hibaobjektumot tartalmaz, ha ODBC-adatforrást használ, akkor nagyobb valószínűséggel kap több hibaobjektumot.) Ha egy másik DAO-művelet hibát okoz, a hibagyűjtemény törlődik, és az új hibaobjektum a Hibagyűjteménybe kerül. Azok a DAO-műveletek, amelyek nem hoznak létre hibát, nincs hatással a hibagyűjteményre.

A DAO hibakódjaiért lásd a DAOERR.H fájlt. A kapcsolódó információkért tekintse meg a DAO súgójának "Trappable Data Access Errors" (Trappable Data Access Errors) című témakörét.

A kivételkezelésről általában vagy az objektumokról CDaoException további információt a Kivételkezelés (MFC) és a Kivételek: Adatbáziskivételek című cikkben talál. A második cikk példakódot tartalmaz, amely a DAO kivételkezelését szemlélteti.

Öröklési hierarchia

CObject

CException

CDaoException

Requirements

Fejléc:afxdao.h

CDaoException::CDaoException

Egy CDaoException objektumot hoz létre.

CDaoException();

Megjegyzések

A keretrendszer általában kivételobjektumokat hoz létre, amikor a kód kivételt okoz. Ritkán kell explicit módon létrehoznia egy kivételobjektumot. Ha saját kódból szeretne dobni, CDaoException hívja meg az AfxThrowDaoException globális függvényt.

Előfordulhat azonban, hogy kifejezetten létre szeretne hozni egy kivételobjektumot, ha közvetlen hívásokat indít a DAO-nak az MFC-osztályok által beágyazott DAO-felületmutatókon keresztül. Ebben az esetben előfordulhat, hogy hibainformációkat kell lekérnie a DAO-tól. Tegyük fel, hogy hiba történik a DAO-ban, amikor DAO-metódust hív meg a DAODatabases felületén keresztül egy munkaterület Adatbázis-gyűjteményéhez.

A DAO hibainformációinak lekérése
  1. CDaoException Objektum létrehozása.

  2. Hívja meg a kivételobjektum GetErrorCount tagfüggvényét annak meghatározásához, hogy hány hibaobjektum található az adatbázismotor Hibagyűjteményében. (Általában csak egy, kivéve, ha ODBC-adatforrást használ.)

  3. A kivételobjektum GetErrorInfo tagfüggvényének meghívásával egyszerre egy adott hibaobjektumot kérhet le a gyűjtemény indexe alapján a kivételobjektumon keresztül. A kivételobjektumot egy DAO-hibaobjektum proxyjaként tekinti.

  4. Vizsgálja meg az aktuális CDaoErrorInfo struktúrát, amely GetErrorInfo a m_pErrorInfo adattagban tér vissza. A tagok információt nyújtanak a DAO-hibáról.

  5. ODBC-adatforrás esetén szükség szerint ismételje meg a 3. és a 4. lépést további hibaobjektumok esetén.

  6. Ha a halomra építette a kivételobjektumot, a befejezéskor törölje azt az delete operátorral.

Az MFC DAO-osztályok hibáinak kezeléséről további információt a Kivételek: Adatbázis-kivételek című cikkben talál.

CDaoException::GetErrorCount

Hívja meg ezt a tagfüggvényt az adatbázismotor hibagyűjteményében található DAO-hibaobjektumok számának lekéréséhez.

short GetErrorCount();

Visszaadott érték

Az adatbázismotor hibagyűjteményében található DAO-hibaobjektumok száma.

Megjegyzések

Ez az információ hasznos lehet a Hibák gyűjteményen keresztüli ismétléshez a gyűjtemény egy vagy több DAO-hibaobjektumának lekéréséhez. Ha hibaobjektumot szeretne lekérni index vagy DAO hibaszám alapján, hívja meg a GetErrorInfo tagfüggvényt.

Megjegyzés:

A Hibák gyűjteményben általában csak egy hibaobjektum található. Ha azonban ODBC-adatforrással dolgozik, több is lehet.

CDaoException::GetErrorInfo

Hibainformációkat ad vissza egy adott hibaobjektumról a Hibagyűjteményben.

void GetErrorInfo(int nIndex);

Paraméterek

nIndex
Az adatbázismotor Hibagyűjteményében található hibainformációk indexe az index szerinti kereséshez.

Megjegyzések

Hívja meg ezt a tagfüggvényt a kivétellel kapcsolatos alábbi típusú információk beszerzéséhez:

  • Hibakód

  • Forrás

  • Description

  • Súgófájl

  • Súgókörnyezet

GetErrorInfo az adatokat a kivételobjektum adattagjában m_pErrorInfo tárolja. A visszaadott információk rövid leírását a m_pErrorInfo. Ha az MFC által kiírt típuskivételt CDaoException észleli, a m_pErrorInfo tag már ki lesz töltve. Ha úgy dönt, hogy közvetlenül hívja meg a DAO-t, a kitöltéshez a kivételobjektum tagfüggvényét GetErrorInfo kell meghívnia m_pErrorInfo. Részletesebb leírásért tekintse meg a CDaoErrorInfo struktúráját.

További információ a DAO-kivételekről és a példakódról : Kivételek: Adatbázis-kivételek.

CDaoException::m_nAfxDaoError

Kiterjesztett MFC hibakódot tartalmaz.

Megjegyzések

Ez a kód olyan esetekben van megadva, amikor az MFC DAO-osztályok egy adott összetevője tévedett.

A lehetséges értékek a következők:

  • NO_AFX_DAO_ERROR A legutóbbi művelet nem eredményezett kiterjesztett MFC-hibát. A művelet azonban más hibákat is okozhatott volna a DAO-tól vagy az OLE-tól, ezért ellenőriznie kell m_pErrorInfo és esetleg m_scode.

  • AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC nem tudta inicializálni a Microsoft Jet adatbázismotort. Előfordulhat, hogy az OLE inicializálása sikertelen volt, vagy lehetetlen volt létrehozni a DAO-adatbázismotor-objektum egy példányát. Ezek a problémák általában a DAO vagy az OLE hibás telepítésére utalnak.

  • AFX_DAO_ERROR_DFX_BIND A DAO rekordmezőcsere (DFX) függvényhívásban használt cím nem létezik vagy érvénytelen (a címet nem az adatok kötésére használták). Lehet, hogy rossz címet adott át egy DFX-hívásban, vagy a cím érvénytelenné vált a DFX-műveletek között.

  • AFX_DAO_ERROR_OBJECT_NOT_OPEN Olyan rekordhalmazt kísérelt meg megnyitni, amely nem nyitott állapotú lekérdezési vagy tabledef-objektum alapján történt.

CDaoException::m_pErrorInfo

Egy olyan struktúrára mutató CDaoErrorInfo mutatót tartalmaz, amely a GetErrorInfo meghívásával a legutóbb lekért DAO-hibaobjektum adatait tartalmazza.

Megjegyzések

Ez az objektum a következő információkat tartalmazza:

CDaoErrorInfo tag Információ Meaning
m_lErrorCode Hibakód A DAO hibakódja
m_strSource Forrás A hibát eredetileg létrehozó objektum vagy alkalmazás neve
m_strDescription Description A hibához társított leíró sztring
m_strHelpFile Súgófájl Egy Windows súgófájl elérési útja, amelyben a felhasználó információkat kaphat a problémáról
m_lHelpContext Súgókörnyezet Egy témakör környezetazonosítója a DAO súgófájljában

Az objektumban található információk részletes leírását a CDaoErrorInfo struktúrájában CDaoErrorInfo találja.

CDaoException::m_scode

A hibát leíró típusértéket SCODE tartalmaz.

Megjegyzések

Ez egy OLE-kód. Ezt az értéket ritkán kell használnia, mert szinte minden esetben pontosabb MFC- vagy DAO-hibainformációk érhetők el a többi CDaoException adattagban.

Az SCODE-ról további információt a Windows SDK OLE hibakódjainak struktúrája című témakörben talál. A SCODE adattípus a HRESULT adattípusra van leképítve.

Lásd még

CException osztály
hierarchiadiagram