Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 CDBExceptionbude obsahovat jednu z následujících hodnot:
AFX_SQL_ERROR_API_CONFORMANCE Ovladač pro
CDatabase::OpenExvolání neodpovídáCDatabase::Openpož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
CDatabasea následný pokus o vytvoření připojení naGetDefaultConnectzá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
CStringdatové typy neboCByteArraydatových typů najdete v argumentunMaxLengthRFX_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
DoFieldExchangepř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í
DoFieldExchangenení kompatibilní s datovým typem sloupce v sadě záznamů.AFX_SQL_ERROR_ILLEGAL_MODE Volal
CRecordset::Updatejste bez předchozího voláníCRecordset::AddNewneboCRecordset::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::UpdateneboDeletejste 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::Updatejste 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::OpenExvolání neodpovídáCDatabase::Openpož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
CLongBinarydatové 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í
SQLErrorODBC 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
SQLErrorODBC 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
SQLErrorODBC . 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
SQLErrorpfNativeError funkce. Příklad: 207.Text chybové zprávy vrácený v parametru
SQLErrorszErrorMsg 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