Freigeben über


ADO-Run-Time-Fehler

ADO-Fehler werden ihrem Programm als Laufzeitfehler gemeldet. Sie können den Fehlerfangmechanismus Ihrer Programmiersprache verwenden, um sie abzufangen und zu behandeln. Verwenden Sie beispielsweise in Visual Basic die On Error-Anweisung. In Visual C++ hängt sie von der Methode ab, die Sie für den Zugriff auf die ADO-Bibliotheken verwenden. Verwenden Sie mit #import einen try-catch--Block. Andernfalls müssen C++-Programmierer das Fehlerobjekt explizit abrufen, indem GetErrorInfoaufgerufen wird. Die folgende Visual Basic-Unterprozedur veranschaulicht das Abfangen eines ADO-Fehlers:

' 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

Diese Form_Load Ereignisprozedur erstellt absichtlich einen Fehler, indem versucht wird, dasselbe Connection-Objekt zweimal zu öffnen. Beim zweiten Aufruf der Open-Methode wird der Fehlerhandler aktiviert. In diesem Fall ist der Fehler vom Typ adErrObjectOpen, sodass der Fehlerhandler die folgende Meldung anzeigt, bevor die Programmausführung fortgesetzt wird:

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

Die Fehlermeldung enthält alle Informationen, die vom Visual Basic Err-Objekt bereitgestellt werden, mit Ausnahme des werts LastDLLError, der hier nicht angewendet wird. Die Fehlernummer teilt Ihnen mit, welcher Fehler aufgetreten ist. Die Beschreibung ist in Fällen hilfreich, in denen Sie den Fehler nicht selbst behandeln möchten. Sie können sie einfach an den Benutzer weitergeben. Obwohl Sie in der Regel Meldungen verwenden möchten, die für Ihre Anwendung angepasst sind, können Sie nicht jeden Fehler antizipieren. die Beschreibung gibt einige Hinweise darauf, was schief gelaufen ist. Im Beispielcode wurde der Fehler vom Connection-Objekt gemeldet. Hier wird der Typ oder die programmgesteuerte ID des Objekts angezeigt – kein Variablenname.

Anmerkung

Das Visual Basic Err-Objekt enthält nur Informationen zum letzten Fehler. Die ADO Errors -Auflistung des Connection -Objekts enthält ein Error -Objekt für jeden Fehler, der durch den letzten ADO-Vorgang ausgelöst wird. Verwenden Sie die Errors-Auflistung anstelle des Err--Objekts, um mehrere Fehler zu behandeln. Weitere Informationen zur Fehler-Auflistung finden Sie unter Provider-Fehler. Wenn jedoch kein gültiges Connection-Objekt vorhanden ist, ist das Err-Objekt die einzige Quelle für Informationen zu ADO-Fehlern.

Welche Arten von Vorgängen werden wahrscheinlich zu ADO-Fehlern führen? Häufige ADO-Fehler können das Öffnen eines Objekts wie ein Connection oder Recordset-umfassen, versuchen, Daten zu aktualisieren oder eine Methode oder Eigenschaft aufzurufen, die vom Anbieter nicht unterstützt wird.

OLE DB-Fehler können auch als Laufzeitfehler in der Errors-Auflistung an Ihre Anwendung übergeben werden.

Das folgende Thema enthält weitere Informationen zu ADO-Fehlern.