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.