Partilhar via


Erros de Run-Time do ADO

Os erros do ADO são relatados ao programa como erros em tempo de execução. Você pode usar o mecanismo de captura de erros da sua linguagem de programação para capturá-los e tratá-los. Por exemplo, no Visual Basic, use a instrução On Error. No Visual C++, depende do método que você está usando para acessar as bibliotecas do ADO. Com #import, use de um bloco try-catch. Caso contrário, os programadores C++ precisam recuperar explicitamente o objeto de erro chamando GetErrorInfo. O seguinte sub procedimento do Visual Basic demonstra como interceptar um erro do ADO:

' BeginErrorHandlingVB01
Private Sub Form_Load()
' Turn on error handling
On Error GoTo FormLoadError

'Open the database and the recordset for processing.
'
Dim strCnn As String
strCnn = "Provider=sqloledb;" & _
    "Data Source=a-iresmi2000;" & _
    "Initial Catalog=Northwind;Integrated Security=SSPI"

' cnn is a Public Connection Object because
' it was defined WithEvents
Set cnn = New ADODB.Connection
cnn.Open strCnn

' The next line of code intentionally causes
' an error by trying to open a connection
' that has already been opened.
cnn.Open strCnn

' rst is a Public Recordset because it
' was defined WithEvents
Set rst = New ADODB.Recordset
rst.Open "Customers", cnn

Exit Sub

' Error handler
FormLoadError:
    Dim strErr As String
    Select Case Err
        Case adErrObjectOpen
            strErr = "Error #" & Err.Number & ": " & Err.Description & vbCrLf
            strErr = strErr & "Error reported by: " & Err.Source & vbCrLf
            strErr = strErr & "Help File: " & Err.HelpFile & vbCrLf
            strErr = strErr & "Topic ID: " & Err.HelpContext
            MsgBox strErr
            Debug.Print strErr
            Err.Clear
            Resume Next
        ' If some other error occurs that
        ' has nothing to do with ADO, show
        ' the number and description and exit.
        Case Else
            strErr = "Error #" & Err.Number & ": " & Err.Description & vbCrLf
            MsgBox strErr
            Debug.Print strErr
            Unload Me
    End Select
End Sub
' EndErrorHandlingVB01

Esse procedimento de evento Form_Load cria intencionalmente um erro ao tentar abrir o mesmo objeto de Conexão duas vezes. Na segunda vez que o método Open é chamado, o manipulador de erros é ativado. Nesse caso, o erro é do tipo adErrObjectOpen, portanto, o manipulador de erros exibe a seguinte mensagem antes de retomar a execução do programa:

Error #3705: Operation is not allowed when the object is open.
Error reported by: ADODB.Connection
Help File: E:\WINNT\HELP\ADO260.CHM Topic ID: 1003705

A mensagem de erro inclui cada informação fornecida pelo objeto Err do Visual Basic, exceto pelo valor LastDLLError, que não se aplica aqui. O número de erro informa qual erro ocorreu. A descrição é útil em casos em que você não deseja lidar com o erro por conta própria. Você pode simplesmente passá-lo para o usuário. Embora você geralmente queira usar mensagens personalizadas para seu aplicativo, não é possível prever todos os erros; a descrição dá alguma pista sobre o que deu errado. No código de exemplo, o erro foi relatado pelo objeto Connection. Você verá o tipo do objeto ou a ID programática aqui – não um nome de variável.

Nota

O objeto Err do Visual Basic contém apenas informações sobre o erro mais recente. A coleção Erros do ADO do objeto de Conexão contém um objeto Error para cada erro gerado pela operação mais recente do ADO. Use o conjunto Erros em vez do objeto Err para lidar com vários erros. Para obter mais informações sobre a coleção erros, consulte erros do provedor. No entanto, se não houver nenhum objeto Connection válido, o objeto Err será a única fonte para obter informações sobre erros do ADO.

Quais tipos de operações provavelmente causarão erros do ADO? Erros comuns do ADO podem envolver a abertura de um objeto, como um Connection ou Recordset, a tentativa de atualizar dados ou a chamada de um método ou propriedade que não é compatível com seu provedor.

Erros do OLE DB também podem ser passados para seu aplicativo como erros de tempo de execução na coleção Erros.

O tópico a seguir fornece mais informações sobre erros do ADO.

  • Referência de Erro do ADO