Partager via


CDaoException, classe

Représente une condition d'exception résultant des classes de base de données MFC basées sur des objets d'accès aux données (DAO).

Remarque

L’objet d’accès aux données (DAO) est pris en charge via Office 2013. DAO 3.6 est la version finale et est obsolète.

Syntaxe

class CDaoException : public CException

Membres

Constructeurs publics

Nom Description
CDaoException ::CDaoException Construit un objet CDaoException.

Méthodes publiques

Nom Description
CDaoException ::GetErrorCount Retourne le nombre d’erreurs dans la collection Errors du moteur de base de données.
CDaoException ::GetErrorInfo Retourne des informations d’erreur sur un objet d’erreur particulier dans la collection Errors.

Membres de données publics

Nom Description
CDaoException ::m_nAfxDaoError Contient un code d’erreur étendu pour toute erreur dans les classes DAO MFC.
CDaoException ::m_pErrorInfo Pointeur vers un objet CDaoErrorInfo qui contient des informations sur un objet d’erreur DAO.
CDaoException ::m_scode Valeur SCODE associée à l’erreur.

Notes

La classe inclut des membres de données publiques que vous pouvez utiliser pour déterminer la cause de l’exception. CDaoException les objets sont construits et levées par les fonctions membres des classes de base de données DAO.

Remarque

Les classes de base de données DAO sont distinctes des classes de base de données MFC basées sur Open Database Connectivity (ODBC). Tous les noms de classes de base de données DAO ont le préfixe « CDao ». Vous pouvez toujours accéder aux sources de données ODBC avec les classes DAO. En général, les classes MFC basées sur DAO sont plus capables que les classes MFC basées sur ODBC ; les classes DAO peuvent accéder aux données, notamment via des pilotes ODBC, via leur propre moteur de base de données. Les classes DAO prennent également en charge les opérations DDL (Data Definition Language), telles que l’ajout de tables via les classes, sans avoir à appeler DAO directement. Pour plus d’informations sur les exceptions levées par les classes ODBC, consultez CDBException.

Vous pouvez accéder aux objets d’exception dans l’étendue d’une expression CATCH . Vous pouvez également lever CDaoException des objets à partir de votre propre code avec la fonction globale AfxThrowDaoException .

Dans MFC, toutes les erreurs DAO sont exprimées en tant qu’exceptions, de type CDaoException. Lorsque vous interceptez une exception de ce type, vous pouvez utiliser CDaoException des fonctions membres pour récupérer des informations à partir d’objets d’erreur DAO stockés dans la collection Errors du moteur de base de données. À mesure que chaque erreur se produit, un ou plusieurs objets d’erreur sont placés dans la collection Errors. (Normalement, la collection ne contient qu’un seul objet d’erreur ; si vous utilisez une source de données ODBC, vous êtes plus susceptible d’obtenir plusieurs objets d’erreur.) Quand une autre opération DAO génère une erreur, la collection Errors est effacée et le nouvel objet d’erreur est placé dans la collection Errors. Les opérations DAO qui ne génèrent pas d’erreur n’ont aucun effet sur la collection Errors.

Pour obtenir les codes d’erreur DAO, consultez le fichier DAOERR.H. Pour plus d’informations, consultez la rubrique « Erreurs d’accès aux données interceptables » dans l’aide de DAO.

Pour plus d’informations sur la gestion des exceptions en général ou sur CDaoException les objets, consultez les articles MFC (Exception Handling) et Exceptions : Exceptions de base de données. Le deuxième article contient un exemple de code qui illustre la gestion des exceptions dans DAO.

Hiérarchie d'héritage

CObject

CException

CDaoException

Spécifications

En-tête : afxdao.h

CDaoException ::CDaoException

Construit un objet CDaoException.

CDaoException();

Notes

En règle générale, le framework crée des objets d’exception lorsque son code lève une exception. Vous devez rarement construire un objet d’exception explicitement. Si vous souhaitez lever un CDaoException code à partir de votre propre code, appelez la fonction globale AfxThrowDaoException.

Toutefois, vous pouvez créer explicitement un objet d’exception si vous effectuez des appels directs à DAO via les pointeurs d’interface DAO encapsulés par les classes MFC. Dans ce cas, vous devrez peut-être récupérer des informations d’erreur à partir de DAO. Supposons qu’une erreur se produit dans DAO lorsque vous appelez une méthode DAO via l’interface DAODatabases vers la collection Databases d’un espace de travail.

Pour récupérer les informations d’erreur DAO
  1. Construisez un CDaoException objet.

  2. Appelez la fonction membre GetErrorCount de l’objet d’exception pour déterminer le nombre d’objets d’erreur dans la collection Errors du moteur de base de données. (Normalement, une seule, sauf si vous utilisez une source de données ODBC.)

  3. Appelez la fonction membre GetErrorInfo de l’objet d’exception pour récupérer un objet d’erreur spécifique à la fois, par index dans la collection, via l’objet exception. Considérez l’objet d’exception comme un proxy pour un objet d’erreur DAO.

  4. Examinez la structure CDaoErrorInfo actuelle qui GetErrorInfo retourne dans le membre de données m_pErrorInfo. Ses membres fournissent des informations sur l’erreur DAO.

  5. Dans le cas d’une source de données ODBC, répétez les étapes 3 et 4 en fonction des besoins, pour plus d’objets d’erreur.

  6. Si vous avez construit l’objet d’exception sur le tas, supprimez-le avec l’opérateur delete lorsque vous avez terminé.

Pour plus d’informations sur la gestion des erreurs dans les classes DAO MFC, consultez l’article Exceptions : Exceptions de base de données.

CDaoException ::GetErrorCount

Appelez cette fonction membre pour récupérer le nombre d’objets d’erreur DAO dans la collection Errors du moteur de base de données.

short GetErrorCount();

Valeur de retour

Nombre d’objets d’erreur DAO dans la collection Errors du moteur de base de données.

Notes

Ces informations sont utiles pour parcourir la collection Errors pour récupérer chacun d’un ou plusieurs objets d’erreur DAO dans la collection. Pour récupérer un objet d’erreur par index ou par numéro d’erreur DAO, appelez la fonction membre GetErrorInfo .

Remarque

Normalement, il n’existe qu’un seul objet d’erreur dans la collection Errors. Toutefois, si vous utilisez une source de données ODBC, il peut y en avoir plusieurs.

CDaoException ::GetErrorInfo

Retourne des informations d’erreur sur un objet d’erreur particulier dans la collection Errors.

void GetErrorInfo(int nIndex);

Paramètres

nIndex
Index des informations d’erreur dans la collection Errors du moteur de base de données, pour la recherche par index.

Notes

Appelez cette fonction membre pour obtenir les types d’informations suivants sur l’exception :

  • Code d’erreur

  • Source

  • Description

  • Fichier d’aide

  • Contexte d’aide

GetErrorInfo stocke les informations dans le membre de données de l’objet m_pErrorInfo d’exception. Pour obtenir une brève description des informations retournées, consultez m_pErrorInfo. Si vous interceptez une exception de type CDaoException levée par MFC, le m_pErrorInfo membre est déjà renseigné. Si vous choisissez d’appeler DAO directement, vous devez appeler la fonction membre de l’objet GetErrorInfo d’exception vous-même pour remplir m_pErrorInfo. Pour obtenir une description plus détaillée, consultez la structure CDaoErrorInfo .

Pour plus d’informations sur les exceptions DAO et sur l’exemple de code, consultez l’article Exceptions : Exceptions de base de données.

CDaoException ::m_nAfxDaoError

Contient un code d’erreur étendu MFC.

Notes

Ce code est fourni dans les cas où un composant spécifique des classes DAO MFC a erré.

Les valeurs possibles sont les suivantes :

  • NO_AFX_DAO_ERROR L’opération la plus récente n’a pas entraîné d’erreur étendue MFC. Toutefois, l’opération peut avoir produit d’autres erreurs à partir de DAO ou OLE. Vous devez donc vérifier m_pErrorInfo et éventuellement m_scode.

  • AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC n’a pas pu initialiser le moteur de base de données Microsoft Jet. OLE a peut-être échoué à initialiser, ou il est peut-être impossible de créer une instance de l’objet moteur de base de données DAO. Ces problèmes suggèrent généralement une mauvaise installation de DAO ou OLE.

  • AFX_DAO_ERROR_DFX_BIND Une adresse utilisée dans un appel de fonction d’échange de champ d’enregistrement DAO (DFX) n’existe pas ou n’est pas valide (l’adresse n’a pas été utilisée pour lier des données). Vous avez peut-être passé une adresse incorrecte dans un appel DFX, ou l’adresse peut être devenue non valide entre les opérations DFX.

  • AFX_DAO_ERROR_OBJECT_NOT_OPEN Vous avez tenté d’ouvrir un jeu d’enregistrements en fonction d’un querydef ou d’un objet tabledef qui n’était pas dans un état ouvert.

CDaoException ::m_pErrorInfo

Contient un pointeur vers une CDaoErrorInfo structure qui fournit des informations sur l’objet d’erreur DAO que vous avez récupéré pour la dernière fois en appelant GetErrorInfo.

Notes

Cet objet contient les informations suivantes :

Membre CDaoErrorInfo Information Signification
m_lErrorCode Code d’erreur Code d’erreur DAO
m_strSource Source Nom de l’objet ou de l’application qui a généré l’erreur à l’origine
m_strDescription Description Chaîne descriptive associée à l’erreur
m_strHelpFile Fichier d’aide Chemin d’accès à un fichier d’aide Windows dans lequel l’utilisateur peut obtenir des informations sur le problème
m_lHelpContext Contexte d’aide ID de contexte d’une rubrique dans le fichier d’aide DAO

Pour plus d’informations sur les informations contenues dans l’objet CDaoErrorInfo , consultez la structure CDaoErrorInfo .

CDaoException ::m_scode

Contient une valeur de type SCODE qui décrit l’erreur.

Notes

Il s’agit d’un code OLE. Vous devrez rarement utiliser cette valeur, car, dans presque tous les cas, des informations d’erreur MFC ou DAO plus spécifiques sont disponibles dans les autres CDaoException membres de données.

Pour plus d’informations sur SCODE, consultez la rubrique Structure des codes d’erreur OLE dans le Kit de développement logiciel (SDK) Windows. Le type de données SCODE est mappé au type de données HRESULT.

Voir aussi

CException, classe
Graphique hiérarchique