Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Vertegenwoordigt een uitzonderingsvoorwaarde die voortvloeit uit de databaseklassen.
Syntaxis
class CDBException : public CException
Leden
Leden van openbare gegevens
| Naam | Description |
|---|---|
| CDBException::m_nRetCode | Bevat een ODBC-retourcode (Open Database Connectivity) van het type RETCODE. |
| CDBException::m_strError | Bevat een tekenreeks die de fout in alfanumerieke termen beschrijft. |
| CDBException::m_strStateNativeOrigin | Bevat een tekenreeks die de fout beschrijft in termen van de foutcodes die door ODBC worden geretourneerd. |
Opmerkingen
De klasse bevat twee leden van openbare gegevens die u kunt gebruiken om de oorzaak van de uitzondering te bepalen of om een tekstbericht weer te geven waarin de uitzondering wordt beschreven.
CDBException objecten worden samengesteld en gegenereerd door lidfuncties van de databaseklassen.
Opmerking
Deze klasse is een van de ODBC-klassen (Open Database Connectivity) van MFC. Als u in plaats daarvan de nieuwere DAO-klassen (Data Access Objects) gebruikt, gebruikt u in plaats daarvan CDaoException . Alle DAO-klassenamen hebben 'CDao' als voorvoegsel. Zie het artikel Overzicht: Databaseprogrammering voor meer informatie.
Uitzonderingen zijn gevallen van abnormale uitvoering waarbij omstandigheden buiten het beheer van het programma vallen, zoals gegevensbron- of netwerk-I/O-fouten. Fouten die u in de normale loop van het uitvoeren van uw programma zou verwachten, worden meestal niet als uitzonderingen beschouwd.
U kunt deze objecten openen binnen het bereik van een CATCH-expressie . U kunt ook objecten uit uw eigen code gooien CDBException met de AfxThrowDBException globale functie.
Zie de artikelen Exception Handling (MFC) en Uitzonderingen: Database-uitzonderingen voor meer informatie over het verwerken van uitzonderingen in het algemeen of over CDBException objecten.
Overnamehiërarchie
CDBException
Requirements
Koptekst: afxdb.h
CDBException::m_nRetCode
Bevat een ODBC-foutcode van het type RETCODE dat wordt geretourneerd door een API-functie (ODBC Application Programming Interface).
Opmerkingen
Dit type bevat SQL-voorvoegsels die zijn gedefinieerd door ODBC en AFX_SQL-voorvoegselcodes die zijn gedefinieerd door de databaseklassen. Voor een CDBException, dit lid bevat een van de volgende waarden:
AFX_SQL_ERROR_API_CONFORMANCE Het stuurprogramma voor een
CDatabase::OpenExofCDatabase::Openaanroep voldoet niet aan de vereiste ODBC API-conformheidsniveau 1 (SQL_OAC_LEVEL1).AFX_SQL_ERROR_CONNECT_FAIL verbinding met de gegevensbron is mislukt. U hebt een NULL-aanwijzer
CDatabasedoorgegeven aan de constructor van uw recordset en de volgende poging om een verbinding te maken opGetDefaultConnectbasis van mislukt.AFX_SQL_ERROR_DATA_TRUNCATED U hebt meer gegevens aangevraagd dan waarvoor u opslag hebt opgegeven. Zie het
nMaxLengthargument voor RFX_Text en RFX_Binary onder 'Macro's en globals' voor informatie over het vergroten van de opgegeven gegevensopslag voorCStringofCByteArraygegevenstypen.AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED Een aanroep voor
CRecordset::Openhet aanvragen van een dynaset is mislukt. Dynasets worden niet ondersteund door de bestuurder.AFX_SQL_ERROR_EMPTY_COLUMN_LIST U hebt geprobeerd een tabel te openen (of wat u hebt opgegeven, kan niet worden geïdentificeerd als procedure-aanroep of SELECT-instructie ), maar er zijn geen kolommen geïdentificeerd in rfx-functie-aanroepen (Record Field Exchange) in uw
DoFieldExchangeonderdrukking.AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH Het type RFX-functie in uw
DoFieldExchangeonderdrukking is niet compatibel met het kolomgegevenstype in de recordset.AFX_SQL_ERROR_ILLEGAL_MODE U hebt gebeld
CRecordset::Updatezonder eerder te bellenCRecordset::AddNewofCRecordset::Edit.AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED Uw aanvraag voor het vergrendelen van records voor update kan niet worden uitgevoerd omdat uw ODBC-stuurprogramma geen ondersteuning biedt voor vergrendeling.
AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED U hebt een tabel aangeroepen
CRecordset::UpdateofDeletezonder unieke sleutel en meerdere records gewijzigd.AFX_SQL_ERROR_NO_CURRENT_RECORD U hebt geprobeerd een eerder verwijderde record te bewerken of te verwijderen. U moet na een verwijdering naar een nieuwe huidige record schuiven.
AFX_SQL_ERROR_NO_POSITIONED_UPDATES Uw aanvraag voor een dynaset kan niet worden uitgevoerd omdat uw ODBC-stuurprogramma geen ondersteuning biedt voor positionele updates.
AFX_SQL_ERROR_NO_ROWS_AFFECTED U hebt aangeroepen
CRecordset::UpdateofDelete, maar wanneer de bewerking is gestart, kan de record niet meer worden gevonden.AFX_SQL_ERROR_ODBC_LOAD_FAILED Een poging om de ODBC.DLL te laden is mislukt; Windows kan deze DLL niet vinden of niet laden. Deze fout is fataal.
AFX_SQL_ERROR_ODBC_V2_REQUIRED Uw aanvraag voor een dynaset kan niet worden uitgevoerd omdat een ODBC-stuurprogramma op niveau 2 is vereist.
AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY Een poging om te schuiven is mislukt omdat de gegevensbron geen ondersteuning biedt voor achteruit schuiven.
AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED Een aanroep voor
CRecordset::Openhet aanvragen van een momentopname is mislukt. Momentopnamen worden niet ondersteund door het stuurprogramma. (Dit moet alleen gebeuren wanneer de ODBC-cursorbibliotheek ODBCCURS.DLL niet aanwezig is.)AFX_SQL_ERROR_SQL_CONFORMANCE Het stuurprogramma voor een
CDatabase::OpenExofCDatabase::Openaanroep voldoet niet aan het vereiste ODBC SQL-nalevingsniveau van 'Minimum' (SQL_OSC_MINIMUM).AFX_SQL_ERROR_SQL_NO_TOTAL Het ODBC-stuurprogramma kan de totale grootte van een
CLongBinarygegevenswaarde niet opgeven. De bewerking is waarschijnlijk mislukt omdat een globaal geheugenblok niet vooraf kan worden toegewezen.AFX_SQL_ERROR_RECORDSET_READONLY U hebt geprobeerd een recordset met het kenmerk Alleen-lezen bij te werken of de gegevensbron is alleen-lezen. Er kunnen geen updatebewerkingen worden uitgevoerd met de recordset of het
CDatabaseobject waarmee het is gekoppeld.SQL_ERROR functie is mislukt. Het foutbericht dat door de ODBC-functie
SQLErrorwordt geretourneerd, wordt opgeslagen in hetm_strErrorgegevenslid.SQL_INVALID_HANDLE functie is mislukt vanwege een ongeldige omgevingshandgreep, verbindingsgreep of instructiegreep. Dit geeft een programmeerfout aan. Er is geen aanvullende informatie beschikbaar via de ODBC-functie
SQLError.
De SQL-voorvoegselcodes worden gedefinieerd door ODBC. De AFX-voorvoegselcodes worden gedefinieerd in AFXDB. H, gevonden in MFC\INCLUDE.
CDBException::m_strError
Bevat een tekenreeks die de fout beschrijft die de uitzondering heeft veroorzaakt.
Opmerkingen
De tekenreeks beschrijft de fout in alfanumerieke termen. Zie voor meer gedetailleerde informatie en een voorbeeld m_strStateNativeOrigin.
CDBException::m_strStateNativeOrigin
Bevat een tekenreeks die de fout beschrijft die de uitzondering heeft veroorzaakt.
Opmerkingen
De tekenreeks is van de notatie "State:%s,Native:%ld,Origin:%s", waarbij de notatiecodes in volgorde worden vervangen door waarden die beschrijven:
De SQLSTATE, een tekenreeks met null-beëindiging die een foutcode van vijf tekens bevat die wordt geretourneerd in de parameter szSqlState van de ODBC-functie
SQLError. SQLSTATE-waarden worden vermeld in bijlage A, ODBC-foutcodes, in de naslaginformatie voor ODBC-programmeurs. Voorbeeld: 'S0022'.De systeemeigen foutcode, specifiek voor de gegevensbron, die wordt geretourneerd in de parameter pfNativeError van de
SQLErrorfunctie. Voorbeeld: 207.De tekst van het foutbericht die wordt geretourneerd in de parameter szErrorMsg van de
SQLErrorfunctie. Dit bericht bestaat uit verschillende namen tussen haakjes. Als er een fout wordt doorgegeven van de bron aan de gebruiker, voegt elk ODBC-onderdeel (gegevensbron, stuurprogramma, Stuurprogrammabeheer) een eigen naam toe. Deze informatie helpt bij het vaststellen van de oorsprong van de fout. Voorbeeld: [Microsoft][ODBC SQL Server-stuurprogramma][SQL Server]
Het framework interpreteert de fouttekenreeks en plaatst de bijbehorende onderdelen in m_strStateNativeOrigin; als m_strStateNativeOrigin deze informatie bevat voor meer dan één fout, worden de fouten gescheiden door nieuwe regels. Het framework plaatst de alfanumerieke fouttekst in m_strError.
Zie de functie SQLError in de naslaginformatie voor ODBC-programmeurs voor meer informatie over de codes die worden gebruikt om deze tekenreeks samen te stellen.
Example
Van ODBC: "State:S0022,Native:207,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server][SQL Server] Ongeldige kolomnaam 'ColName'"
In m_strStateNativeOrigin: "State:S0022,Native:207,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server][SQL Server]"
In m_strError: "Ongeldige kolomnaam 'ColName'"
Zie ook
CException-klasse
Hiërarchiegrafiek
CDatabase-klasse
CRecordset-klasse
Klasse CFieldExchange
CRecordset::Update
CRecordset::D elete
CException-klasse