Classe CDaoException
Representa uma condição de exceção decorrente das classes de banco de dados MFC com base em DAO (objetos de acesso a dados).
Observação
O DAO (Objeto de Acesso a Dados) é suportado pelo Office 2013. DAO 3.6 é a versão final e está obsoleta.
Sintaxe
class CDaoException : public CException
Membros
Construtores públicos
Nome | Descrição |
---|---|
CDaoException::CDaoException | Constrói um objeto CDaoException . |
Métodos públicos
Nome | Descrição |
---|---|
CDaoException::GetErrorCount | Retorna o número de erros na coleção Erros do mecanismo de banco de dados. |
CDaoException::GetErrorInfo | Retorna informações de erro sobre um objeto de erro específico na coleção Erros. |
Membros de Dados Públicos
Nome | Descrição |
---|---|
CDaoException::m_nAfxDaoError | Contém um código de erro estendido para qualquer erro nas classes DAO do MFC. |
CDaoException::m_pErrorInfo | Um ponteiro para um objeto CDaoErrorInfo que contém informações sobre um objeto de erro DAO. |
CDaoException::m_scode | O valor SCODE associado ao erro. |
Comentários
A classe inclui membros de dados públicos que você pode usar para determinar a causa da exceção. Os objetos CDaoException
são construídos e gerados por funções de membro das classes de banco de dados DAO.
Observação
As classes de banco de dados do DAO são diferentes das classes de banco de dados MFC com base no ODBC (Open Database Connectivity). Todos os nomes de classe de banco de dados do DAO têm o prefixo "CDao". Você ainda pode acessar fontes de dados ODBC com as classes DAO. Em geral, as classes do MFC baseadas em DAO são mais capazes do que as classes do MFC com base em ODBC. As classes baseadas em DAO podem acessar dados, inclusive por meio de drivers do ODBC, por meio de um mecanismo próprio de banco de dados. As classes baseadas em DAO também dão suporte a operações de DDL (Linguagem de Definição de Dados), como adicionar tabelas por meio das classes, sem precisar chamar o DAO diretamente. Para obter informações sobre exceções geradas pelas classes do ODBC, confira CDBException.
Você pode acessar objetos de exceção no escopo de uma expressão CATCH. Você também pode lançar objetos CDaoException
de seu próprio código com a função global AfxThrowDaoException.
No MFC, todos os erros de DAO são expressos como exceções, do tipo CDaoException
. Quando você captura uma exceção desse tipo, pode usar funções de membro CDaoException
para recuperar informações de objetos de erro DAO armazenados na coleção Erros do mecanismo de banco de dados. À medida que cada erro ocorre, um ou mais objetos de erro são colocados na coleção Erros. (Normalmente, a coleção contém apenas um objeto de erro; se você estiver usando uma fonte de dados ODBC, é mais provável que obtenha vários objetos de erro.) Quando outra operação DAO gera um erro, a coleção Errors é limpa e o novo objeto de erro é colocado na coleção Errors. As operações DAO que não geram um erro não têm nenhum efeito na coleção Erros.
Para códigos de erro DAO, confira o arquivo DAOERR.H. Para obter informações relacionadas, confira o tópico "Erros de acesso a dados interceptáveis" na ajuda do DAO.
Para obter mais informações sobre o tratamento de exceções em geral ou sobre objetos CDaoException
, confira os artigos Tratamento de exceções (MFC) e Exceções: exceções de banco de dados. O segundo artigo contém um código de exemplo que ilustra o tratamento de exceções no DAO.
Hierarquia de herança
CDaoException
Requisitos
Cabeçalho: afxdao.h
CDaoException::CDaoException
Constrói um objeto CDaoException
.
CDaoException();
Comentários
Normalmente, a estrutura cria objetos de exceção quando seu código gera uma exceção. Você raramente precisa construir um objeto de exceção explicitamente. Se você quiser lançar um CDaoException
de seu próprio código, chame a função global AfxThrowDaoException.
No entanto, talvez você queira criar explicitamente um objeto de exceção se estiver fazendo chamadas diretas para o DAO por meio dos ponteiros de interface do DAO que as classes MFC encapsulam. Nesse caso, talvez seja necessário recuperar informações de erro do DAO. Suponha que um erro ocorra no DAO quando você chama um método DAO por meio da interface DAODatabases para a coleção Bancos de dados de um workspace.
Para recuperar as informações de erro do DAO
Construir um objeto
CDaoException
.Chame a função de membro GetErrorCount do objeto de exceção para determinar quantos objetos de erro estão na coleção Erros do mecanismo de banco de dados. (Normalmente, apenas um, a menos que você esteja usando uma fonte de dados ODBC.)
Chame a função de membro GetErrorInfo do objeto de exceção para recuperar um objeto de erro específico por vez, por índice na coleção, por meio do objeto de exceção. Pense no objeto de exceção como um proxy para um objeto de erro do DAO.
Examine a estrutura CDaoErrorInfo atual que
GetErrorInfo
retorna no membro de dados m_pErrorInfo. Seus membros fornecem informações sobre o erro do DAO.No caso de uma fonte de dados ODBC, repita as etapas 3 e 4, conforme necessário, para obter mais objetos de erro.
Se você tiver construído o objeto de exceção no heap, exclua-o com o operador
delete
quando terminar.
Para mais informações sobre como lidar com erros de tratamento nas classes DAO do MFC, confira o artigo Exceções: exceções de banco de dados.
CDaoException::GetErrorCount
Chame essa função de membro para recuperar o número de objetos de erro do DAO na coleção Erros do mecanismo de banco de dados.
short GetErrorCount();
Valor de retorno
O número de objetos de erro do DAO na coleção Erros do mecanismo de banco de dados.
Comentários
Essas informações são úteis para percorrer a coleção Errors para recuperar cada um de um ou mais objetos de erro DAO na coleção. Para recuperar um objeto de erro por índice ou por número de erro do DAO, chame a função de membro GetErrorInfo.
Observação
Normalmente, há apenas um objeto de erro na coleção Erros. No entanto, se você estiver trabalhando com uma fonte de dados ODBC, poderá haver mais de uma.
CDaoException::GetErrorInfo
Retorna informações de erro sobre um objeto de erro específico na coleção Erros.
void GetErrorInfo(int nIndex);
Parâmetros
nIndex
O índice das informações de erro na coleção Erros do mecanismo de banco de dados para pesquisa por índice.
Comentários
Chame essa função de membro para obter os seguintes tipos de informações sobre a exceção:
Código do erro
Fonte
Descrição
Arquivo de ajuda
Contexto de ajuda
GetErrorInfo
armazena as informações no membro de dados m_pErrorInfo
do objeto de exceção. Para obter uma breve descrição das informações retornadas, confira m_pErrorInfo. Se você capturar uma exceção de tipo CDaoException
gerada pelo MFC, o membro m_pErrorInfo
já estará preenchido. Se você optar por chamar o DAO diretamente, deverá chamar a função de membro GetErrorInfo
do objeto de exceção para preencher m_pErrorInfo
. Para obter uma descrição mais detalhada, confira a estrutura CDaoErrorInfo.
Para obter informações sobre exceções de DAO e código de exemplo, confira o artigo Exceções: exceções de banco de dados.
CDaoException::m_nAfxDaoError
Contém um código de erro estendido do MFC.
Comentários
Esse código é fornecido nos casos em que um componente específico das classes DAO do MFC errou.
Os valores possíveis são:
NO_AFX_DAO_ERROR A operação mais recente não resultou em um erro estendido do MFC. No entanto, a operação pode ter produzido outros erros de DAO ou OLE, portanto, você deve verificar m_pErrorInfo e, possivelmente, m_scode.
AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC não pôde inicializar o mecanismo de banco de dados do Microsoft Jet. O OLE pode ter falhado ao inicializar ou pode ter sido impossível criar uma instância do objeto do mecanismo de banco de dados do DAO. Esses problemas geralmente sugerem uma instalação incorreta de DAO ou OLE.
AFX_DAO_ERROR_DFX_BIND Um endereço usado em uma chamada de função DFX (troca de campo de registro) DAO não existe ou é inválido (o endereço não foi usado para associar dados). Você pode ter passado um endereço incorreto em uma chamada DFX ou o endereço pode ter se tornado inválido entre operações DFX.
AFX_DAO_ERROR_OBJECT_NOT_OPEN Você tentou abrir um conjunto de registros com base em um objeto querydef ou tabledef que não estava em um estado aberto.
CDaoException::m_pErrorInfo
Contém um ponteiro para uma estrutura CDaoErrorInfo
que fornece informações sobre o objeto de erro do DAO que você recuperou pela última vez chamando GetErrorInfo.
Comentários
Esse objeto contém as seguintes informações:
Membro CDaoErrorInfo | Informações | Significado |
---|---|---|
m_lErrorCode |
Código de erro | O código de erro do DAO |
m_strSource |
Origem | O nome do objeto ou aplicativo que gerou o erro originalmente |
m_strDescription |
Descrição | Uma cadeia de caracteres descritiva associada a um erro |
m_strHelpFile |
Arquivo de ajuda | Um caminho para um arquivo da Ajuda do Windows no qual o usuário pode obter informações sobre o problema |
m_lHelpContext |
Contexto de ajuda | A ID de contexto de um tópico no arquivo de Ajuda do DAO |
Para obter detalhes completos sobre as informações contidas no objeto CDaoErrorInfo
, confira a estrutura CDaoErrorInfo.
CDaoException::m_scode
Contém um valor de tipo SCODE
que descreve o erro.
Comentários
Este é um código OLE. Você raramente precisará usar esse valor porque, em quase todos os casos, informações de erro mais específicas do MFC ou DAO estão disponíveis nos outros CDaoException
membros de dados.
Para obter informações sobre o SCODE, confira o tópico Estrutura de códigos de erro OLE no SDK do Windows. O tipo de dados SCODE é mapeado para o tipo de dados HRESULT.