CDBException – třída
Představuje podmínku výjimky vyplývající z databázových tříd.
Syntaxe
class CDBException : public CException
Členové
Veřejné datové členy
Název | Popis |
---|---|
CDBException::m_nRetCode | Obsahuje návratový kód ODBC (Open Database Connectivity) typu RETCODE. |
CDBException::m_strError | Obsahuje řetězec, který popisuje chybu v alfanumerických termínech. |
CDBException::m_strStateNativeOrigin | Obsahuje řetězec popisující chybu z hlediska kódů chyb vrácených rozhraním ODBC. |
Poznámky
Třída obsahuje dva veřejné datové členy, které můžete použít k určení příčiny výjimky nebo k zobrazení textové zprávy popisující výjimku. CDBException
objekty jsou sestaveny a vyvolány členskými funkcemi databázových tříd.
Poznámka:
Tato třída je jednou z tříd ROZHRANÍ ODBC (Open Database Connectivity) knihovny MFC. Pokud místo toho používáte novější třídy DAO (Data Access Objects), použijte místo toho CDaoException . Všechny názvy tříd DAO mají jako předponu CDao. Další informace naleznete v článku Přehled: Programování databáze.
Výjimky jsou případy neobvyklého spuštění zahrnující podmínky mimo kontrolu programu, jako jsou zdroje dat nebo chyby vstupně-výstupních operací sítě. Chyby, které můžete očekávat v normálním průběhu provádění programu, se obvykle nepovažují za výjimky.
K těmto objektům můžete přistupovat v rámci oboru výrazu CATCH . Objekty můžete také vyvolat CDBException
z vlastního AfxThrowDBException
kódu pomocí globální funkce.
Další informace o zpracování výjimek obecně nebo o CDBException
objektech naleznete v článcích Zpracování výjimek (MFC) a Výjimky: Výjimky databáze.
Hierarchie dědičnosti
CDBException
Požadavky
Hlavička: afxdb.h
CDBException::m_nRetCode
Obsahuje kód chyby ODBC typu RETCODE vrácený funkcí rozhraní API (Application Programming Interface).
Poznámky
Tento typ zahrnuje kódy s předponou SQL definované rozhraním ODBC a kódy s předponou AFX_SQL definované třídami databáze. Pro člena CDBException
bude obsahovat jednu z následujících hodnot:
AFX_SQL_ERROR_API_CONFORMANCE Ovladač pro
CDatabase::OpenEx
volání neodpovídáCDatabase::Open
požadované úrovni shody rozhraní ODBC API 1 (SQL_OAC_LEVEL1).AFX_SQL_ERROR_CONNECT_FAIL Připojení ke zdroji dat se nezdařilo. Do konstruktoru sady záznamů jste předali ukazatel NULL
CDatabase
a následný pokus o vytvoření připojení naGetDefaultConnect
základě selhání.AFX_SQL_ERROR_DATA_TRUNCATED jste požadovali více dat, než jste zadali úložiště. Informace o zvýšení poskytnutého úložiště dat pro
CString
datové typy neboCByteArray
datových typů najdete v argumentunMaxLength
RFX_Text a RFX_Binary v části Makra a globální hodnoty.AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED Volání
CRecordset::Open
žádosti o dynaset se nezdařilo. Ovladač nepodporuje dynasety.AFX_SQL_ERROR_EMPTY_COLUMN_LIST Pokusili jste se otevřít tabulku (nebo to, co jste zadali, nebylo možné identifikovat jako volání procedury nebo příkaz SELECT ), ale v
DoFieldExchange
přepsání nejsou žádné sloupce identifikované ve volání funkce RFX (Record Field Exchange).AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH Typ funkce RFX v přepsání
DoFieldExchange
není kompatibilní s datovým typem sloupce v sadě záznamů.AFX_SQL_ERROR_ILLEGAL_MODE Volal
CRecordset::Update
jste bez předchozího voláníCRecordset::AddNew
neboCRecordset::Edit
.AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED Požadavek na uzamčení záznamů pro aktualizaci nelze splnit, protože ovladač ODBC nepodporuje uzamčení.
AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED Jste volali
CRecordset::Update
neboDelete
jste pro tabulku bez jedinečného klíče a změnili více záznamů.AFX_SQL_ERROR_NO_CURRENT_RECORD Jste se pokusili upravit nebo odstranit dříve odstraněný záznam. Po odstranění se musíte posunout na nový aktuální záznam.
AFX_SQL_ERROR_NO_POSITIONED_UPDATES Požadavek na dynaset nelze splnit, protože ovladač ODBC nepodporuje umístěné aktualizace.
AFX_SQL_ERROR_NO_ROWS_AFFECTED Volali
CRecordset::Update
jste neboDelete
, ale když operace začala záznam již nebyla nalezena.AFX_SQL_ERROR_ODBC_LOAD_FAILED Pokus o načtení ODBC.DLL selhal; Systém Windows nemohl najít nebo nemohl načíst tuto knihovnu DLL. Tato chyba je závažná.
AFX_SQL_ERROR_ODBC_V2_REQUIRED Požadavek na dynaset nelze splnit, protože je vyžadován ovladač ODBC kompatibilní s úrovní 2.
AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY Pokus o posouvání nebyl úspěšný, protože zdroj dat nepodporuje zpětné posouvání.
AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED volání
CRecordset::Open
žádosti o snímek se nezdařilo. Ovladač nepodporuje snímky. (K tomu by mělo dojít pouze v případě, že není k dispozici knihovna kurzorů ODBC ODBCCURS.DLL.)AFX_SQL_ERROR_SQL_CONFORMANCE ovladač pro
CDatabase::OpenEx
volání neodpovídáCDatabase::Open
požadované úrovni shody ODBC SQL s minimální úrovní (SQL_OSC_MINIMUM).AFX_SQL_ERROR_SQL_NO_TOTAL ovladač ODBC nemohl určit celkovou velikost
CLongBinary
datové hodnoty. Operace pravděpodobně selhala, protože globální blok paměti nelze předem přidělit.AFX_SQL_ERROR_RECORDSET_READONLY Pokusili jste se aktualizovat sadu záznamů jen pro čtení nebo je zdroj dat jen pro čtení. Nelze provádět žádné operace aktualizace se sadou záznamů nebo objektem
CDatabase
, ke kterým je přidružen.SQL_ERROR funkce se nezdařila. Chybová zpráva vrácená funkcí
SQLError
ODBC je uložena v datovém členum_strError
.SQL_INVALID_HANDLE funkce selhala kvůli neplatnému popisovači prostředí, popisovači připojení nebo popisovači příkazu. To značí chybu programování. Z funkce
SQLError
ODBC nejsou k dispozici žádné další informace .
Kódy s předponou SQL jsou definovány rozhraním ODBC. Kódy s předponou AFX jsou definovány v AFXDB. H, nachází se v PROSTŘEDÍ MFC\INCLUDE.
CDBException::m_strError
Obsahuje řetězec popisující chybu, která způsobila výjimku.
Poznámky
Řetězec popisuje chybu v alfanumerických termínech. Podrobnější informace a příklad najdete v tématu m_strStateNativeOrigin
.
CDBException::m_strStateNativeOrigin
Obsahuje řetězec popisující chybu, která způsobila výjimku.
Poznámky
Řetězec je ve formátu "State:%s,Native:%ld,Origin:%s", kde jsou kódy formátu v pořadí nahrazeny hodnotami, které popisují:
SQLSTATE, řetězec ukončený hodnotou null obsahující kód chyby s pěti znaky vrácený v parametru szSqlState funkce
SQLError
ODBC . Hodnoty SQLSTATE jsou uvedeny v dodatku A, kódy chyb ODBC v odkazu programátora ODBC. Příklad: "S0022".Nativní kód chyby specifický pro zdroj dat vrácený v parametru
SQLError
pfNativeError funkce. Příklad: 207.Text chybové zprávy vrácený v parametru
SQLError
szErrorMsg funkce. Tato zpráva se skládá z několika závorek. Při předávání chyby ze zdroje uživateli připojí každá komponenta ODBC (zdroj dat, ovladač, Správce ovladačů) vlastní název. Tyto informace pomáhají určit původ chyby. Příklad: [Microsoft][Ovladač ODBC SQL Serveru][SQL Server] [SQL Server]
Architektura interpretuje řetězec chyby a vkládá její komponenty do m_strStateNativeOrigin
; pokud m_strStateNativeOrigin
obsahuje informace pro více než jednu chybu, chyby jsou odděleny novými spojnicemi. Architektura vloží alfanumerický text chyby do m_strError
.
Další informace o kódech použitých k vytvoření tohoto řetězce naleznete v tématu FUNKCE SQLError v odkazech programátora ODBC.
Příklad
Z rozhraní ODBC: State:S0022,Native:207,Origin:[Microsoft][Ovladač SQL Serveru ODBC][SQL Server] Neplatný název sloupce ColName
V m_strStateNativeOrigin
: "State:S0022,Native:207;Origin:[Microsoft][ODBC SQL Server Driver][SQL Server][ SQL Server]"
V m_strError
: Neplatný název sloupce ColName
Viz také
CException – třída
Graf hierarchie
CDatabase – třída
CRecordset – třída
CFieldExchange – třída
CRecordset::Update
CRecordset::D elete
CException – třída