Partager via


Erreurs d'exécution ADO

Les erreurs ADO sont signalées à votre programme en tant qu’erreurs d’exécution. Vous pouvez utiliser le mécanisme d’interruption d’erreur de votre langage de programmation pour les intercepter et les gérer. Par exemple, dans Visual Basic, utilisez l’instruction On Error. Dans Visual C++, elle dépend de la méthode que vous utilisez pour accéder aux bibliothèques ADO. Avec #import, utilisez un bloc try-catch. Sinon, les programmeurs C++ doivent récupérer explicitement l’objet d’erreur en appelant GetErrorInfo. La sous-procédure Visual Basic suivante illustre l’interruption d’une erreur 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

Cette procédure événementielle Form_Load crée intentionnellement une erreur en essayant d’ouvrir le même objet Connection deux fois. La deuxième fois que la méthode Open est appelée, le gestionnaire d’erreurs est activé. Dans ce cas, l’erreur est de type adErrObjectOpen, de sorte que le gestionnaire d’erreurs affiche le message suivant avant de reprendre l’exécution du programme :

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

Le message d’erreur inclut chaque élément d’informations fourni par l’objet Err Visual Basic, à l’exception de la valeur LastDLLError, qui ne s’applique pas ici. Le numéro d’erreur vous indique quelle erreur s’est produite. La description est utile dans les cas où vous ne souhaitez pas gérer l’erreur vous-même. Vous pouvez simplement le transmettre à l’utilisateur. Bien que vous souhaitiez généralement utiliser des messages personnalisés pour votre application, vous ne pouvez pas anticiper chaque erreur ; la description donne un indice sur ce qui a été mal passé. Dans l’exemple de code, l’erreur a été signalée par l’objet Connection. Vous verrez le type ou l’ID programmatique de l’objet ici, et non un nom de variable.

Notes

L’objet Err Visual Basic contient uniquement des informations sur l’erreur la plus récente. La collection Errors ADO de l’objet Connection contient un objet Error pour chaque erreur déclenchée par l’opération ADO la plus récente. Utilisez la collection Errors plutôt que l’objet Err pour gérer plusieurs erreurs. Pour plus d’informations sur la collection Errors, consultez Erreurs du fournisseur. Toutefois, s’il n’existe aucun objet Connection valide, l’objet Err est la seule source d’informations sur les erreurs ADO.

Quels types d’opérations sont susceptibles d’entraîner des erreurs ADO ? Les erreurs ADO courantes peuvent concerner l'ouverture d'un objet tel qu'une connexion ou un Recordset, la tentative de mise à jour des données ou l'appel d'une méthode ou d'une propriété qui n'est pas prise en charge par votre fournisseur.

Les erreurs OLE DB peuvent également être transmises à votre application en tant qu’erreurs d’exécution dans la collection Errors.

La rubrique suivante fournit plus d’informations sur les erreurs ADO.