Condividi tramite


Classe CDaoException

Rappresenta una condizione di eccezione generata da classi di database MFC basate su oggetti DAO (Data Access Object). DAO 3.6 è la versione finale e viene considerata 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 Open Database Connessione ivity (ODBC). 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 utilizza 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à

CObject

CException

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 all'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
  1. Costruire un CDaoException oggetto .

  2. 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.

  3. 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.

  4. Esaminare la struttura CDaoErrorInfo corrente che GetErrorInfo restituisce nel membro dati m_pErrorInfo. I relativi membri forniscono informazioni sull'errore DAO.

  5. Nel caso di un'origine dati ODBC, ripetere i passaggi 3 e 4 in base alle esigenze per più oggetti di errore.

  6. 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 degli oggetti errore DAO nella raccolta. 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 di errore

  • Source

  • 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 utilizzato 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 trovava 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 sarà 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.

Vedi anche

Classe CException
Grafico della gerarchia
Classe CException