Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 adatbázisosztályokból eredő kivételfeltételt jelöli.
Szemantika
class CDBException : public CException
Tagok
Nyilvános adatok tagjai
| Név | Description |
|---|---|
| CDBException::m_nRetCode | Egy RETCODE típusú open database connectivity (ODBC) visszatérési kódot tartalmaz. |
| CDBException::m_strError | A hibát alfanumerikus kifejezésekben leíró sztringet tartalmaz. |
| CDBException::m_strStateNativeOrigin | Az ODBC által visszaadott hibakódokkal kapcsolatos hibát leíró sztringet tartalmaz. |
Megjegyzések
Az osztály két nyilvános adattagot tartalmaz, amelyek segítségével meghatározhatja a kivétel okát, vagy megjelenítheti a kivételt leíró szöveges üzenetet.
CDBException objektumokat az adatbázisosztályok tagfüggvényei építenek ki és dobnak ki.
Megjegyzés:
Ez az osztály az MFC open database connectivity (ODBC) osztályainak egyike. Ha ehelyett az újabb Adatelérési objektumok (DAO) osztályokat használja, használja helyette a CDaoException parancsot . Minden DAO-osztálynév előtagként "CDao" előtaggal rendelkezik. További információ: Áttekintés: Adatbázis-programozás.
Kivételt képeznek a programon kívüli feltételek, például adatforrás- vagy hálózati I/O-hibák rendellenes végrehajtásának esetei. A program normál végrehajtása során várható hibák általában nem számítanak kivételeknek.
Ezeket az objektumokat a CATCH kifejezés hatókörén belül érheti el. A globális függvénnyel AfxThrowDBException a saját kódjából is kidobhat CDBException objektumokat.
A kivételkezelésről általában vagy az objektumokról CDBException további információt a Kivételkezelés (MFC) és a Kivételek: Adatbáziskivételek című cikkben talál.
Öröklési hierarchia
CDBException
Requirements
Fejléc: afxdb.h
CDBException::m_nRetCode
Egy ODBC-alkalmazásprogramozási felület (API) függvény által visszaadott RETCODE típusú ODBC-hibakódot tartalmaz.
Megjegyzések
Ez a típus az ODBC által definiált SQL-előtagú kódokat és az adatbázisosztályok által definiált AFX_SQL előtagú kódokat tartalmazza.
CDBExceptionEgy tag a következő értékek egyikét fogja tartalmazni:
AFX_SQL_ERROR_API_CONFORMANCE A hívás vagy
CDatabase::OpenhívásCDatabase::OpenExillesztőprogramja nem felel meg a szükséges ODBC API-megfelelőség 1. szintjének (SQL_OAC_LEVEL1).AFX_SQL_ERROR_CONNECT_FAIL Az adatforráshoz való kapcsolat nem sikerült. Null
CDatabasemutatót adott át a rekordhalmaz konstruktorának, és a következő kísérlet sikertelen volt a kapcsolat létrehozásáraGetDefaultConnect.AFX_SQL_ERROR_DATA_TRUNCATED Több adatot kért, mint amennyihez tárhelyet biztosított. A megadott adattárolás
CStringCByteArraynövelésével kapcsolatos információkért tekintse meg anMaxLengthRFX_Text és RFX_Binary argumentumát a "Makrók és globálisak" területen.AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED A dinasztiát kérő hívás
CRecordset::Opensikertelen volt. A dinasztiákat az illesztőprogram nem támogatja.AFX_SQL_ERROR_EMPTY_COLUMN_LIST Megkísérelt megnyitni egy táblát (vagy azt, amit adott, nem azonosítható eljáráshívásként vagy SELECT utasításként), de a felülbírálásban a rekordmezőcsere (RFX) függvényhívásaiban
DoFieldExchangenincsenek azonosított oszlopok.AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH Az RFX-függvény típusa a felülbírálásban
DoFieldExchangenem kompatibilis a rekordhalmaz oszlop-adattípusával.AFX_SQL_ERROR_ILLEGAL_MODE Korábban hívás vagy hívás
CRecordset::AddNewCRecordset::Editnélkül hívottCRecordset::Update.AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED A frissítés rekordjainak zárolására vonatkozó kérés nem teljesíthető, mert az ODBC-illesztő nem támogatja a zárolást.
AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED Egy egyedi kulccsal nem rendelkező táblát hívott
CRecordset::Updatemeg,Deleteés több rekordot is módosított.AFX_SQL_ERROR_NO_CURRENT_RECORD Korábban törölt rekordot próbált szerkeszteni vagy törölni. Törlés után egy új aktuális rekordhoz kell görgetnie.
AFX_SQL_ERROR_NO_POSITIONED_UPDATES A dinasztiára vonatkozó kérés nem teljesíthető, mert az ODBC-illesztő nem támogatja a helyhez tartozó frissítéseket.
AFX_SQL_ERROR_NO_ROWS_AFFECTED Ön hívott
CRecordset::UpdatevagyDelete, de a művelet megkezdésekor a rekord már nem található.AFX_SQL_ERROR_ODBC_LOAD_FAILED A ODBC.DLL betöltése sikertelen volt; A Windows nem találja vagy nem tudta betölteni ezt a DLL-t. Ez a hiba végzetes.
AFX_SQL_ERROR_ODBC_V2_REQUIRED A dinasztiára vonatkozó kérés nem teljesíthető, mert 2. szintű odBC-illesztőre van szükség.
AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY A görgetési kísérlet nem sikerült, mert az adatforrás nem támogatja a visszafelé görgetést.
AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED A pillanatkép kérésére irányuló
CRecordset::Openhívás sikertelen volt. Az illesztőprogram nem támogatja a pillanatképeket. (Ez csak akkor fordulhat elő, ha az ODBC kurzortár ODBCCURS.DLL nincs jelen.)AFX_SQL_ERROR_SQL_CONFORMANCE A hívás vagy
CDatabase::OpenhívásCDatabase::OpenExillesztőprogramja nem felel meg a minimális ODBC SQL-megfelelőségi szintnek (SQL_OSC_MINIMUM).AFX_SQL_ERROR_SQL_NO_TOTAL Az ODBC-illesztő nem tudta megadni az adatértékek teljes méretét
CLongBinary. A művelet valószínűleg meghiúsult, mert egy globális memóriablokkot nem sikerült előre áthelyezni.AFX_SQL_ERROR_RECORDSET_READONLY Egy írásvédett rekordhalmazt próbált frissíteni, vagy az adatforrás írásvédett. A rekordkészlettel vagy a hozzá társított objektummal nem végezhető frissítési
CDatabaseművelet.SQL_ERROR függvény nem sikerült. Az ODBC függvény
SQLErroráltal visszaadott hibaüzenetet azm_strErroradattag tárolja.SQL_INVALID_HANDLE függvény érvénytelen környezeti leíró, kapcsolatkezelő vagy utasításleíró miatt meghiúsult. Ez programozási hibát jelez. Az ODBC függvény
SQLErrornem tartalmaz további információt.
Az SQL-előtagú kódokat az ODBC határozza meg. Az AFX-előtagú kódok az AFXDB-ben vannak definiálva. H, az MFC\INCLUDE fájlban található.
CDBException::m_strError
A kivételt okozó hibát leíró sztringet tartalmaz.
Megjegyzések
A sztring alfanumerikus kifejezésekben írja le a hibát. Részletesebb információkért és egy példaért lásd: m_strStateNativeOrigin.
CDBException::m_strStateNativeOrigin
A kivételt okozó hibát leíró sztringet tartalmaz.
Megjegyzések
A sztring "State:%s,Native:%ld,Origin:%s" formátumú, ahol a formátumkódok sorrendben a következő értékeket írják le:
Az SQLSTATE, egy null értékű sztring, amely az ODBC függvény
SQLErrorszSqlState paraméterében visszaadott öt karakterből álló hibakódot tartalmaz. Az SQLSTATE-értékek az ODBC programozói referencia A függelékében, az ODBC hibakódjaiban jelennek meg. Példa: "S0022".Az adatforrásra jellemző natív hibakód, amely a függvény pfNativeError paraméterében jelenik meg
SQLError. Példa: 207.A függvény szErrorMsg paraméterében
SQLErrorvisszaadott hibaüzenet szövege. Ez az üzenet több szögletes névből áll. Mivel a rendszer hibát ad át a forrásból a felhasználónak, minden ODBC-összetevő (adatforrás, illesztőprogram, Driver Manager) hozzáfűzi a saját nevét. Ez az információ segít meghatározni a hiba eredetét. Példa: [Microsoft][ODBC SQL Server-illesztőprogram][SQL Server]
A keretrendszer értelmezi a hibasztringet, és az összetevőket belerakja m_strStateNativeOrigin; ha m_strStateNativeOrigin egynél több hibára vonatkozó információt tartalmaz, a hibákat új vonalak választják el egymástól. A keretrendszer az alfanumerikus hibaszöveget a fájlba m_strErrorhelyezi.
A sztring létrehozásához használt kódokkal kapcsolatos további információkért tekintse meg az SQLError függvényt az ODBC Programozó referenciájában.
Example
Forrás: ODBC: "State:S0022,Native:207,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server] Érvénytelen oszlopnév "ColName"
In m_strStateNativeOrigin: "State:S0022,Native:207,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server]"
In m_strError: "Érvénytelen oszlopnév "ColName""
Lásd még
CException osztály
hierarchiadiagram
CDatabase-osztály
CRecordset osztály
CFieldExchange osztály
CRecordset::Update
CRecordset::D elete
CException osztály