Classe CDaoException
Rappresenta una condizione di eccezione generata da classi di database MFC basate su oggetti DAO (Data Access Object).
Nota
L'oggetto DAO (Data Access Object) è supportato tramite Office 2013. DAO 3.6 è la versione finale ed è obsoleta.
Sintassi
class CDaoException : public CException
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CDaoException::CDaoException | Costruisce un oggetto CDaoException . |
Metodi pubblici
Nome | Descrizione |
---|---|
CDaoException::GetErrorCount | Restituisce il numero di errori nell'insieme Errors del motore di database. |
CDaoException::GetErrorInfo | Restituisce informazioni sull'errore relative a un oggetto errore specifico nell'insieme Errors. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CDaoException::m_nAfxDaoError | Contiene un codice di errore esteso per qualsiasi errore nelle classi DAO MFC. |
CDaoException::m_pErrorInfo | Puntatore a un oggetto CDaoErrorInfo che contiene informazioni su un oggetto errore DAO. |
CDaoException::m_scode | Valore SCODE associato all'errore. |
Osservazioni:
La classe include membri dati pubblici che è possibile usare per determinare la causa dell'eccezione. CDaoException
gli oggetti vengono costruiti e generati da funzioni membro delle classi di database DAO.
Nota
Le classi di database DAO sono distinte dalle classi di database MFC basate su ODBC (Open Database Connectivity). Tutti i nomi delle classi di database DAO hanno il prefisso "CDao". È comunque possibile accedere alle origini dati ODBC con le classi DAO. In generale, le classi MFC basate su DAO sono più capaci delle classi MFC basate su ODBC; Le classi basate su DAO possono accedere ai dati, inclusi i driver ODBC, tramite il proprio motore di database. Le classi basate su DAO supportano anche operazioni DDL (Data Definition Language), ad esempio l'aggiunta di tabelle tramite le classi, senza dover chiamare direttamente DAO. Per informazioni sulle eccezioni generate dalle classi ODBC, vedere CDBException.
È possibile accedere agli oggetti eccezione all'interno dell'ambito di un'espressione CATCH . È anche possibile generare CDaoException
oggetti dal proprio codice con la funzione globale AfxThrowDaoException .
In MFC tutti gli errori DAO vengono espressi come eccezioni, di tipo CDaoException
. Quando si intercetta un'eccezione di questo tipo, è possibile utilizzare CDaoException
le funzioni membro per recuperare informazioni da qualsiasi oggetto errore DAO archiviato nell'insieme Errors del motore di database. Quando si verifica ogni errore, nell'insieme Errors vengono inseriti uno o più oggetti errore. In genere la raccolta contiene un solo oggetto errore. Se si usa un'origine dati ODBC, è più probabile che vengano visualizzati più oggetti di errore. Quando un'altra operazione DAO genera un errore, l'insieme Errors viene cancellato e il nuovo oggetto errore viene inserito nell'insieme Errors. Le operazioni DAO che non generano un errore non hanno alcun effetto sulla raccolta Errors.
Per i codici di errore DAO, vedere il file DAOERR.H. Per informazioni correlate, vedere l'argomento "Errori di accesso ai dati intercegnabili" nella Guida di DAO.
Per altre informazioni sulla gestione delle eccezioni in generale o sugli CDaoException
oggetti, vedere gli articoli Gestione delle eccezioni (MFC) ed Eccezioni: Eccezioni del database. Il secondo articolo contiene codice di esempio che illustra la gestione delle eccezioni in DAO.
Gerarchia di ereditarietà
CDaoException
Requisiti
Intestazione: afxdao.h
CDaoException::CDaoException
Costruisce un oggetto CDaoException
.
CDaoException();
Osservazioni:
In genere, il framework crea oggetti eccezione quando il codice genera un'eccezione. Raramente è necessario costruire un oggetto eccezione in modo esplicito. Se si vuole generare un oggetto CDaoException
dal proprio codice, chiamare la funzione globale AfxThrowDaoException.
Tuttavia, è possibile creare in modo esplicito un oggetto eccezione se si effettuano chiamate dirette a DAO tramite i puntatori di interfaccia DAO incapsulati dalle classi MFC. In tal caso, potrebbe essere necessario recuperare informazioni sugli errori da DAO. Si supponga che si verifichi un errore in DAO quando si chiama un metodo DAO tramite l'interfaccia DAODatabases alla raccolta Databases di un'area di lavoro.
Per recuperare le informazioni sull'errore DAO
Costruire un
CDaoException
oggetto .Chiamare la funzione membro GetErrorCount dell'oggetto eccezione per determinare il numero di oggetti errore presenti nell'insieme Errors del motore di database. In genere solo una, a meno che non si usi un'origine dati ODBC.
Chiamare la funzione membro GetErrorInfo dell'oggetto eccezione per recuperare un oggetto errore specifico alla volta, in base all'indice nell'insieme, tramite l'oggetto eccezione. Si consideri l'oggetto eccezione come proxy per un oggetto errore DAO.
Esaminare la struttura CDaoErrorInfo corrente che
GetErrorInfo
restituisce nel membro dati m_pErrorInfo. I relativi membri forniscono informazioni sull'errore DAO.Nel caso di un'origine dati ODBC, ripetere i passaggi 3 e 4 in base alle esigenze per più oggetti di errore.
Se è stato creato l'oggetto eccezione nell'heap, eliminarlo con l'operatore
delete
al termine.
Per altre informazioni sulla gestione degli errori nelle classi DAO MFC, vedere l'articolo Eccezioni: Eccezioni al database.
CDaoException::GetErrorCount
Chiamare questa funzione membro per recuperare il numero di oggetti errore DAO nell'insieme Errors del motore di database.
short GetErrorCount();
Valore restituito
Numero di oggetti errore DAO nell'insieme Errors del motore di database.
Osservazioni:
Queste informazioni sono utili per scorrere l'insieme Errors per recuperare ognuno di uno o più oggetti errore DAO nell'insieme. Per recuperare un oggetto errore per indice o per numero di errore DAO, chiamare la funzione membro GetErrorInfo .
Nota
In genere è presente un solo oggetto errore nell'insieme Errors. Se si usa un'origine dati ODBC, tuttavia, potrebbero essere presenti più di una.
CDaoException::GetErrorInfo
Restituisce informazioni sull'errore relative a un oggetto errore specifico nell'insieme Errors.
void GetErrorInfo(int nIndex);
Parametri
nIndex
Indice delle informazioni sull'errore nella raccolta Errors del motore di database, per la ricerca in base all'indice.
Osservazioni:
Chiamare questa funzione membro per ottenere i tipi di informazioni seguenti sull'eccezione:
Codice errore
Origine
Descrizione
File della Guida
Contesto della Guida
GetErrorInfo
archivia le informazioni nel membro dati dell'oggetto m_pErrorInfo
eccezione. Per una breve descrizione delle informazioni restituite, vedere m_pErrorInfo. Se si intercetta un'eccezione di tipo CDaoException
generata da MFC, il m_pErrorInfo
membro verrà già compilato. Se si sceglie di chiamare direttamente DAO, è necessario chiamare manualmente la funzione membro dell'oggetto GetErrorInfo
eccezione per riempire m_pErrorInfo
. Per una descrizione più dettagliata, vedere la struttura CDaoErrorInfo .
Per informazioni sulle eccezioni DAO e sul codice di esempio, vedere l'articolo Eccezioni: Eccezioni al database.
CDaoException::m_nAfxDaoError
Contiene un codice di errore esteso MFC.
Osservazioni:
Questo codice viene fornito nei casi in cui si è verificato un errore in un componente specifico delle classi DAO MFC.
I valori possibili sono:
NO_AFX_DAO_ERROR L'operazione più recente non ha generato un errore esteso MFC. Tuttavia, l'operazione potrebbe aver generato altri errori da DAO o OLE, pertanto è consigliabile controllare m_pErrorInfo ed eventualmente m_scode.
AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC non è riuscito a inizializzare il motore di database Microsoft Jet. Ole potrebbe non essere riuscito a inizializzare oppure potrebbe essere stato impossibile creare un'istanza dell'oggetto motore di database DAO. Questi problemi suggeriscono in genere un'installazione non valida di DAO o OLE.
AFX_DAO_ERROR_DFX_BIND Un indirizzo usato in una chiamata di funzione DFX (DAO Record Field Exchange) non esiste o non è valido (l'indirizzo non è stato usato per associare i dati). Potrebbe essere stato passato un indirizzo non valido in una chiamata DFX oppure l'indirizzo potrebbe non essere valido tra le operazioni DFX.
AFX_DAO_ERROR_OBJECT_NOT_OPEN Si è tentato di aprire un recordset basato su un oggetto querydef o tabledef che non si trova in uno stato aperto.
CDaoException::m_pErrorInfo
Contiene un puntatore a una CDaoErrorInfo
struttura che fornisce informazioni sull'oggetto errore DAO recuperato per l'ultima volta chiamando GetErrorInfo.
Osservazioni:
Questo oggetto contiene le informazioni seguenti:
Membro CDaoErrorInfo | Informazioni | significato |
---|---|---|
m_lErrorCode |
Codice di errore | Codice di errore DAO |
m_strSource |
Origine | Nome dell'oggetto o dell'applicazione che ha generato originariamente l'errore |
m_strDescription |
Descrizione | Stringa descrittiva associata all'errore |
m_strHelpFile |
File della Guida | Percorso di un file della Guida di Windows in cui l'utente può ottenere informazioni sul problema |
m_lHelpContext |
Contesto della Guida | ID di contesto per un argomento nel file della Guida DI DAO |
Per informazioni dettagliate sulle informazioni contenute nell'oggetto CDaoErrorInfo
, vedere la struttura CDaoErrorInfo .
CDaoException::m_scode
Contiene un valore di tipo SCODE
che descrive l'errore.
Osservazioni:
Si tratta di un codice OLE. Raramente è necessario usare questo valore perché, in quasi tutti i casi, le informazioni sugli errori MFC o DAO più specifiche sono disponibili negli altri CDaoException
membri dati.
Per informazioni su SCODE, vedere l'argomento Struttura dei codici di errore OLE in Windows SDK. Il tipo di dati SCODE esegue il mapping al tipo di dati HRESULT.