Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Representa uma condição de exceção decorrente das classes da base de dados.
Sintaxe
class CDBException : public CException
Membros
Membros de Dados Públicos
| Nome | Description |
|---|---|
| CDBException::m_nRetCode | Contém um código de retorno de Conectividade de Base de Dados Aberta (ODBC), do tipo RETCODE. |
| CDBException::m_strError | Contém uma cadeia que descreve o erro em termos alfanuméricos. |
| CDBException::m_strStateNativeOrigin | Contém uma cadeia que descreve o erro em termos dos códigos de erro devolvidos pelo ODBC. |
Observações
A classe inclui dois membros de dados públicos que pode usar para determinar a causa da exceção ou para mostrar uma mensagem de texto a descrever a exceção.
CDBException Os objetos são construídos e lançados por funções membros das classes da base de dados.
Observação
Esta classe é uma das classes de Conectividade de Bases de Dados Abertas (ODBC) da MFC. Se estiver a usar as classes mais recentes Data Access Objects (DAO), use CDaoException . Todos os nomes de classes DAO têm "CDao" como prefixo. Para mais informações, consulte o artigo Visão Geral: Programação de Bases de Dados.
Exceções são casos de execução anormal envolvendo condições fora do controlo do programa, como erros de fonte de dados ou de E/S de rede. Erros que poderia esperar encontrar no curso normal da execução do seu programa geralmente não são considerados exceções.
Pode aceder a estes objetos dentro do âmbito de uma expressão CATCH . Também podes lançar CDBException objetos do teu próprio código com a AfxThrowDBException função global.
Para mais informações sobre o tratamento de exceções em geral, ou sobre CDBException objetos, consulte os artigos Tratamento de Exceções (MFC) e Exceções: Exceções de Base de Dados.
Hierarquia de herança
CDBException
Requerimentos
Cabeçalho: afxdb.h
CDBException::m_nRetCode
Contém um código de erro ODBC do tipo RETCODE devolvido por uma função de interface de programação de aplicações ODBC (API).
Observações
Este tipo inclui códigos com prefixo SQL definidos pelo ODBC e códigos com prefixo AFX_SQL definidos pelas classes da base de dados. Para um CDBException, este elemento conterá um dos seguintes valores:
AFX_SQL_ERROR_API_CONFORMANCE O driver para uma
CDatabase::OpenExchamada ouCDatabase::Opennão cumpre o nível 1 de conformidade da API ODBC exigido (SQL_OAC_LEVEL1).AFX_SQL_ERROR_CONNECT_FAIL A ligação à fonte de dados falhou. Passaste um ponteiro NULL
CDatabasepara o construtor do teu conjunto de registos e a tentativa subsequente de criar uma ligação baseada emGetDefaultConnectfalhou.AFX_SQL_ERROR_DATA_TRUNCATED Solicitou mais dados do que forneceu armazenamento. Para informações sobre o aumento do armazenamento de dados fornecido para
CStringouCByteArraytipos de dados, consulte onMaxLengthargumento para RFX_Text e RFX_Binary em "Macros e Globais."AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED Um apelo para
CRecordset::Openpedir uma dinaseta falhou. Os dínacos não são suportados pelo driver.AFX_SQL_ERROR_EMPTY_COLUMN_LIST Tentou abrir uma tabela (ou o que forneceu não pôde ser identificado como chamada de procedimento ou instrução SELECT ), mas não há colunas identificadas nas chamadas de função de troca de campos de registo (RFX) no seu
DoFieldExchangeoverride.AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH O tipo de função RFX no seu
DoFieldExchangeoverride não é compatível com o tipo de dados da coluna no conjunto de registos.AFX_SQL_ERROR_ILLEGAL_MODE Ligou
CRecordset::Updatesem ligarCRecordset::AddNewantes ouCRecordset::Edit.AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED O seu pedido para bloquear registos para atualização não pôde ser cumprido porque o seu driver ODBC não suporta bloqueio.
AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED Chamou
CRecordset::UpdateouDeletepediu uma tabela sem chave única e alterou vários registos.AFX_SQL_ERROR_NO_CURRENT_RECORD Tentou editar ou eliminar um registo previamente eliminado. Deve deslocar-se até a um novo registo atual após uma eliminação.
AFX_SQL_ERROR_NO_POSITIONED_UPDATES O seu pedido de dynaset não pôde ser satisfeito porque o seu driver ODBC não suporta atualizações posicionadas.
AFX_SQL_ERROR_NO_ROWS_AFFECTED Ligou
CRecordset::UpdateouDelete, mas quando a operação começou, o registo já não podia ser encontrado.AFX_SQL_ERROR_ODBC_LOAD_FAILED Uma tentativa de carregar o ODBC.DLL falhou; O Windows não conseguiu encontrar ou não conseguiu carregar esta DLL. Este erro é fatal.
AFX_SQL_ERROR_ODBC_V2_REQUIRED O seu pedido de um dynaset não pôde ser satisfeito porque é necessário um driver ODBC compatível com o Nível 2.
AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY Uma tentativa de scroll não teve sucesso porque a fonte de dados não suporta scroll para trás.
AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED Uma chamada para
CRecordset::Openpedir um snapshot falhou. Snapshots não são suportados pelo driver. (Isto só deve acontecer quando a ODBCCURS.DLL da biblioteca de cursores ODBC não está presente.)AFX_SQL_ERROR_SQL_CONFORMANCE O driver para uma
CDatabase::OpenExchamada ouCDatabase::Opennão cumpre o nível de conformidade ODBC SQL exigido de "Minimum" (SQL_OSC_MINIMUM).AFX_SQL_ERROR_SQL_NO_TOTAL O controlador ODBC não conseguiu especificar o tamanho total de um
CLongBinaryvalor de dados. A operação provavelmente falhou porque um bloco de memória global não podia ser pré-realocado.AFX_SQL_ERROR_RECORDSET_READONLY Tentou atualizar um conjunto de registos apenas de leitura, ou a fonte de dados é apenas leitura. Não podem ser realizadas operações de atualização com o conjunto de registos ou com o
CDatabaseobjeto a que está associado.SQL_ERROR A função falhou. A mensagem de erro devolvida pela função
SQLErrorODBC é armazenada nom_strErrormembro de dados.SQL_INVALID_HANDLE Função falhou devido a um handle de ambiente, handle de ligação ou handle de instrução inválidos. Isto indica um erro de programação. Não está disponível informação adicional a partir da função
SQLErrorODBC.
Os códigos com prefixo SQL são definidos pelo ODBC. Os códigos com prefixo AFX são definidos em AFXDB. H, encontrado em MFC\INCLUDE.
CDBException::m_strError
Contém uma cadeia que descreve o erro que causou a exceção.
Observações
A cadeia descreve o erro em termos alfanuméricos. Para informações mais detalhadas e um exemplo, veja m_strStateNativeOrigin.
CDBException::m_strStateNativeOrigin
Contém uma cadeia que descreve o erro que causou a exceção.
Observações
A cadeia é da forma "State:%s,Native:%ld,Origin:%s", onde os códigos de formato, por ordem, são substituídos por valores que descrevem:
O SQLSTATE, uma cadeia terminada por nulo contendo um código de erro de cinco caracteres, retornava no parâmetro szSqlState da função
SQLErrorODBC . Os valores SQLSTATE estão listados no Apêndice A, Códigos de Erro ODBC, na Referência do Programador ODBC. Exemplo: "S0022".O código de erro nativo, específico da fonte de dados, deveria no parâmetro pfNativeError da
SQLErrorfunção. Exemplo: 207.O texto da mensagem de erro foi retornado no parâmetro szErrorMsg da
SQLErrorfunção. Esta mensagem consiste em vários nomes colocados entre parênteses. À medida que um erro é passado da sua fonte para o utilizador, cada componente ODBC (fonte de dados, driver, Gestor de Drivers) acrescenta o seu próprio nome. Esta informação ajuda a identificar a origem do erro. Exemplo: [Microsoft][ODBC SQL Server Driver][SQL Server]
O framework interpreta a cadeia de erro e coloca os seus componentes em m_strStateNativeOrigin; se m_strStateNativeOrigin contém informação para mais do que um erro, os erros são separados por novas linhas. A estrutura coloca o texto de erro alfanumérico em m_strError.
Para informações adicionais sobre os códigos usados para compor esta cadeia, consulte a função SQLError na Referência do Programador ODBC.
Example
Do ODBC: "State:S0022,Native:207,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server] Nome da coluna inválido 'ColName'"
Em m_strStateNativeOrigin: "State:S0022,Native:207,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server]"
Em m_strError: "Nome da coluna inválido 'ColName'"
Consulte também
Aula CException
Gráfico de Hierarquia
Classe CDatabase
Classe CRecordset
Classe CFieldExchange
CRecordset::Atualização
CRecordset::D elete
Aula CException