Errori ADO Run-Time
Gli errori ADO vengono segnalati al programma come errori di runtime. È possibile usare il meccanismo di intercettazione degli errori del linguaggio di programmazione per intercettare e gestirli. Ad esempio, in Visual Basic, utilizzare l'istruzione On Error. In Visual C++, dipende dal metodo usato per accedere alle librerie ADO. Con #import, utilizzare un blocco try-catch. In caso contrario, i programmatori C++ devono recuperare in modo esplicito l'oggetto errore chiamando GetErrorInfo. La seguente subroutine di Visual Basic dimostra come intercettare un errore 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
Questa Form_Load routine evento crea intenzionalmente un errore tentando di aprire lo stesso oggetto Connection due volte. La seconda volta che viene chiamato il metodo Open, viene attivato il gestore degli errori. In questo caso l'errore è di tipo adErrObjectOpen, quindi il gestore errori visualizza il messaggio seguente prima di riprendere l'esecuzione del programma:
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
Il messaggio di errore include ogni informazione fornita dall'oggetto Err di Visual Basic, ad eccezione del valore LastDLLError, che non si applica qui. Il numero di errore indica l'errore che si è verificato. La descrizione è utile nei casi in cui non si vuole gestire manualmente l'errore. È sufficiente passarlo all'utente. Anche se in genere si vogliono usare messaggi personalizzati per l'applicazione, non è possibile prevedere ogni errore; la descrizione fornisce qualche indizio su ciò che è andato storto. Nel codice di esempio l'errore è stato segnalato dall'oggetto Connection. Qui verrà visualizzato il tipo o l'ID programmatico dell'oggetto, non un nome di variabile.
Nota
L'oggetto Err di Visual Basic contiene solo informazioni sull'errore più recente. L'insieme ADO Errors dell'oggetto Connection contiene un oggetto Error per ogni errore generato dall'operazione ADO più recente. Usare la raccolta Errors anziché l'oggetto Err per gestire più errori. Per ulteriori informazioni sulla raccolta Errors, vedere Provider Errors. Tuttavia, se non è presente alcun oggetto Connection valido, l'oggetto Err è l'unica origine per informazioni sugli errori ADO.
Quali tipi di operazioni possono causare errori ADO? Gli errori ADO comuni possono comportare l'apertura di un oggetto, ad esempio un Connection o Recordset, il tentativo di aggiornare i dati o chiamare un metodo o una proprietà non supportata dal provider.
Gli errori OLE DB possono anche essere passati all'applicazione come errori di runtime nella raccolta Errors.
Nell'argomento seguente vengono fornite altre informazioni sugli errori ADO.