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
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
Construisez un
CDaoException
objet.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.)
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.
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.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.
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.