CDaoException-Klasse

Stellt eine Ausnahmebedingung dar, die von MFC-Datenbankklassen in Bezug auf Datenzugriffsobjekte (DAOs) ausgelöst wird.

Hinweis

Das Datenzugriffsobjekt (Data Access Object, DAO) wird über Office 2013 unterstützt. DAO 3.6 ist die endgültige Version und veraltet.

Syntax

class CDaoException : public CException

Member

Öffentliche Konstruktoren

Name Beschreibung
CDaoException::CDaoException Erstellt ein CDaoException-Objekt.

Öffentliche Methoden

Name Beschreibung
CDaoException::GetErrorCount Gibt die Anzahl der Fehler in der Errors -Auflistung des Datenbankmoduls zurück.
CDaoException::GetErrorInfo Gibt Fehlerinformationen zu einem bestimmten Fehlerobjekt in der Errors -Auflistung zurück.

Öffentliche Datenmember

Name Beschreibung
CDaoException::m_nAfxDaoError Enthält einen erweiterten Fehlercode für alle Fehler in den MFC DAO-Klassen.
CDaoException::m_pErrorInfo Ein Zeiger auf ein CDaoErrorInfo -Objekt, das Informationen zu einem DAO-Fehlerobjekt enthält.
CDaoException::m_scode Der SCODE-Wert , der dem Fehler zugeordnet ist.

Hinweise

Die Klasse enthält öffentliche Datenmmber, mit denen Sie die Ursache der Ausnahme ermitteln können. CDaoException Objekte werden von Memberfunktionen der DAO-Datenbankklassen erstellt und ausgelöst.

Hinweis

Die DAO-Datenbankklassen unterscheiden sich von den MFC-Datenbankklassen basierend auf Open Database Connectivity (ODBC). Alle DAO-Datenbankklassennamen weisen das Präfix "CDao" auf. Sie können weiterhin auf ODBC-Datenquellen mit den DAO-Klassen zugreifen. Im Allgemeinen sind die auf DAO basierenden MFC-Klassen fähiger als die MFC-Klassen, die auf ODBC basieren; die DAO-basierten Klassen können über ein eigenes Datenbankmodul auf Daten zugreifen, einschließlich über ODBC-Treiber. Die DAO-basierten Klassen unterstützen auch DDL-Vorgänge (Data Definition Language), z. B. das Hinzufügen von Tabellen über die Klassen, ohne DAO direkt aufrufen zu müssen. Informationen zu Ausnahmen, die von den ODBC-Klassen ausgelöst werden, finden Sie unter CDBException.

Sie können auf Ausnahmeobjekte innerhalb des Gültigkeitsbereichs eines CATCH-Ausdrucks zugreifen. Sie können Objekte auch aus Ihrem eigenen Code mit der globalen AfxThrowDaoException-Funktion auslösenCDaoException.

In MFC werden alle DAO-Fehler als Ausnahmen vom Typ CDaoExceptionausgedrückt. Wenn Sie eine Ausnahme dieses Typs abfangen, können Sie Memberfunktionen verwenden CDaoException , um Informationen aus allen DAO-Fehlerobjekten abzurufen, die in der Errors-Auflistung des Datenbankmoduls gespeichert sind. Wenn jeder Fehler auftritt, werden mindestens ein Fehlerobjekt in der Errors-Auflistung platziert. (Normalerweise enthält die Auflistung nur ein Fehlerobjekt. Wenn Sie eine ODBC-Datenquelle verwenden, erhalten Sie wahrscheinlich mehrere Fehlerobjekte.) Wenn ein anderer DAO-Vorgang einen Fehler generiert, wird die Errors-Auflistung gelöscht, und das neue Fehlerobjekt wird in der Errors-Auflistung platziert. DAO-Vorgänge, die keinen Fehler generieren, haben keine Auswirkungen auf die Errors-Auflistung.

Informationen zu DAO-Fehlercodes finden Sie in der Datei DAOERR.H. Verwandte Informationen finden Sie im Thema "Auffangbare Datenzugriffsfehler" in der DAO-Hilfe.

Weitere Informationen zur Ausnahmebehandlung im Allgemeinen oder zu CDaoException Objekten finden Sie in den Artikeln Exception Handling (MFC) und Exceptions: Database Exceptions. Der zweite Artikel enthält Beispielcode, der die Ausnahmebehandlung in DAO veranschaulicht.

Vererbungshierarchie

CObject

CException

CDaoException

Anforderungen

Header: afxdao.h

CDaoException::CDaoException

Erstellt ein CDaoException-Objekt.

CDaoException();

Hinweise

Ordinarily, the framework creates exception objects when its code throws an exception. Sie müssen nur selten ein Ausnahmeobjekt explizit erstellen. Wenn Sie einen CDaoException aus Ihrem eigenen Code auslösen möchten, rufen Sie die globale Funktion AfxThrowDaoException auf.

Möglicherweise möchten Sie jedoch explizit ein Ausnahmeobjekt erstellen, wenn Sie direkte Aufrufe an DAO über die DAO-Schnittstellenzeiger ausführen, die MFC-Klassen kapseln. In diesem Fall müssen Sie möglicherweise Fehlerinformationen aus DAO abrufen. Angenommen, ein Fehler tritt in DAO auf, wenn Sie eine DAO-Methode über die DAODatabases-Schnittstelle für die Databases-Auflistung eines Arbeitsbereichs aufrufen.

So rufen Sie die DAO-Fehlerinformationen ab
  1. Konstruieren Sie ein CDaoException-Objekt.

  2. Rufen Sie die GetErrorCount-Memberfunktion des Ausnahmeobjekts auf, um zu bestimmen, wie viele Fehlerobjekte in der Errors-Auflistung des Datenbankmoduls enthalten sind. (Normalerweise nur eine, es sei denn, Sie verwenden eine ODBC-Datenquelle.)

  3. Rufen Sie die GetErrorInfo-Memberfunktion des Ausnahmeobjekts auf, um jeweils ein bestimmtes Fehlerobjekt nach Index in der Auflistung über das Ausnahmeobjekt abzurufen. Stellen Sie sich das Ausnahmeobjekt als Proxy für ein DAO-Fehlerobjekt vor.

  4. Untersuchen Sie die aktuelle CDaoErrorInfo-Struktur, die GetErrorInfo im m_pErrorInfo-Datenmemm zurückgegeben wird. Seine Mitglieder enthalten Informationen zum DAO-Fehler.

  5. Wiederholen Sie bei einer ODBC-Datenquelle die Schritte 3 und 4 nach Bedarf, um weitere Fehlerobjekte anzuzeigen.

  6. Wenn Sie das Ausnahmeobjekt auf dem Heap erstellt haben, löschen Sie es mit dem delete Operator, wenn Sie fertig sind.

Weitere Informationen zum Behandeln von Fehlern in den MFC DAO-Klassen finden Sie im Artikel Ausnahmen: Datenbank exceptions.

CDaoException::GetErrorCount

Rufen Sie diese Memberfunktion auf, um die Anzahl der DAO-Fehlerobjekte in der Errors-Auflistung des Datenbankmoduls abzurufen.

short GetErrorCount();

Rückgabewert

Die Anzahl der DAO-Fehlerobjekte in der Errors-Auflistung des Datenbankmoduls.

Hinweise

Diese Informationen sind nützlich, um die Errors-Auflistung zu durchlaufen, um jedes oder mehrere DAO-Fehlerobjekte in der Auflistung abzurufen. Rufen Sie zum Abrufen eines Fehlerobjekts nach Index oder DAO-Fehlernummer die GetErrorInfo-Memberfunktion auf.

Hinweis

Normalerweise gibt es nur ein Fehlerobjekt in der Errors-Auflistung. Wenn Sie mit einer ODBC-Datenquelle arbeiten, kann es jedoch mehrere geben.

CDaoException::GetErrorInfo

Gibt Fehlerinformationen zu einem bestimmten Fehlerobjekt in der Errors -Auflistung zurück.

void GetErrorInfo(int nIndex);

Parameter

nIndex
Der Index der Fehlerinformationen in der Errors-Auflistung des Datenbankmoduls für die Suche nach Index.

Hinweise

Rufen Sie diese Memberfunktion auf, um die folgenden Arten von Informationen zur Ausnahme abzurufen:

  • Fehlercode

  • Quelle

  • Beschreibung

  • Hilfedatei

  • Hilfekontext

GetErrorInfo speichert die Informationen im Datenelement des Ausnahmeobjekts m_pErrorInfo . Eine kurze Beschreibung der zurückgegebenen Informationen finden Sie unter m_pErrorInfo. Wenn Sie eine Ausnahme vom Typ CDaoException erfassen, die von MFC ausgelöst wird, wird das m_pErrorInfo Element bereits ausgefüllt. Wenn Sie sich dafür entscheiden, DAO direkt aufzurufen, müssen Sie die Memberfunktion des Ausnahmeobjekts GetErrorInfo selbst aufrufen, um sie auszufüllen m_pErrorInfo. Eine ausführlichere Beschreibung finden Sie in der CDaoErrorInfo-Struktur .

Informationen zu DAO-Ausnahmen und Beispielcode finden Sie im Artikel "Ausnahmen: Datenbank exceptions".

CDaoException::m_nAfxDaoError

Enthält einen erweiterten MFC-Fehlercode.

Hinweise

Dieser Code wird in Fällen bereitgestellt, in denen eine bestimmte Komponente der MFC DAO-Klassen fehlerhaft ist.

Dabei sind folgende Werte möglich:

  • NO_AFX_DAO_ERROR Der letzte Vorgang hat keinen erweiterten MFC-Fehler verursacht. Der Vorgang könnte jedoch andere Fehler von DAO oder OLE erzeugt haben, daher sollten Sie m_pErrorInfo und möglicherweise m_scode überprüfen.

  • AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC konnte das Microsoft Jet-Datenbankmodul nicht initialisieren. OLE konnte möglicherweise nicht initialisiert werden, oder es war unmöglich, eine Instanz des DAO-Datenbankmodulobjekts zu erstellen. Diese Probleme deuten in der Regel auf eine fehlerhafte Installation von DAO oder OLE hin.

  • AFX_DAO_ERROR_DFX_BIND Eine Adresse, die in einem DAO-Datensatzfeldaustausch (DFX)-Funktionsaufruf verwendet wird, ist nicht vorhanden oder ungültig (die Adresse wurde nicht zum Binden von Daten verwendet). Möglicherweise haben Sie eine ungültige Adresse in einem DFX-Aufruf übergeben, oder die Adresse ist zwischen DFX-Vorgängen ungültig geworden.

  • AFX_DAO_ERROR_OBJECT_NOT_OPEN Sie haben versucht, ein Recordset basierend auf einem Querydef- oder tabledef-Objekt zu öffnen, das sich nicht in einem geöffneten Zustand befand.

CDaoException::m_pErrorInfo

Enthält einen Zeiger auf eine CDaoErrorInfo Struktur, die Informationen zum DAO-Fehlerobjekt bereitstellt, das Sie zuletzt abgerufen haben, indem Sie GetErrorInfo aufrufen.

Hinweise

Dieses Objekt enthält die folgenden Informationen:

CDaoErrorInfo-Mitglied Informationen Bedeutung
m_lErrorCode Fehlercode Der DAO-Fehlercode
m_strSource Quelle Der Name des Objekts oder der Anwendung, das den Fehler ursprünglich generiert hat
m_strDescription Beschreibung Eine beschreibende Zeichenfolge, die dem Fehler zugeordnet ist
m_strHelpFile Hilfedatei Ein Pfad zu einer Windows-Hilfedatei, in der der Benutzer Informationen zum Problem erhalten kann
m_lHelpContext Hilfekontext Die Kontext-ID für ein Thema in der DAO-Hilfedatei

Ausführliche Informationen zu den im Objekt enthaltenen Informationen finden Sie in CDaoErrorInfo der CDaoErrorInfo-Struktur .

CDaoException::m_scode

Enthält einen Wert vom Typ SCODE , der den Fehler beschreibt.

Hinweise

Dies ist ein OLE-Code. Sie müssen diesen Wert nur selten verwenden, da in fast allen Fällen spezifischere MFC- oder DAO-Fehlerinformationen in den anderen CDaoException Datenmitgliedern zur Verfügung stehen.

Informationen zu SCODE finden Sie im Thema Struktur von OLE-Fehlercodes im Windows SDK. Der SCODE-Datentyp ist dem HRESULT-Datentyp zugeordnet.

Siehe auch

CException-Klasse
Hierarchiediagramm