Share via


Procedura: gestire gli errori di concorrenza

Aggiornamento: novembre 2007

È possibile intercettare l'oggetto DBConcurrencyException che facilita la risoluzione dei problemi determinati dalle violazioni di concorrenza. L'oggetto DBConcurrencyException restituisce la riga di dati che ha causato l'errore. Per ulteriori informazioni, vedere Membri di DBConcurrencyException.

Nell'esempio seguente viene illustrata la procedura per tentare l'aggiornamento di un'origine dati con il contenuto di NorthwindDataSet dall'interno di un blocco try/catch. Se viene generato un errore, verrà visualizzato il relativo messaggio insieme alla prima colonna della riga di dati che ha causato il problema.

Nota:

Il codice riportato di seguito è un esempio di gestione di un errore di aggiornamento del database. Il codice presuppone diversi elementi: una connessione a un database, un insieme di dati esistente, nonché il presupposto che l'esecuzione del comando di aggiornamento generi una violazione di concorrenza. Per ulteriori informazioni e un esempio esaustivo, vedere Procedura dettagliata: gestione di un'eccezione di concorrenza.

Per risolvere una violazione di concorrenza

  1. Eseguire il comando per aggiornare il database dall'interno di un blocco try/catch.

  2. Se viene generata un'eccezione, analizzare la proprietà Row dell'istruzione catch per determinare la causa della violazione.

  3. Aggiungere il codice per risolvere l'errore in base alle regole business dell'applicazione.

    Nel codice riportato di seguito vengono utilizzati CustomersTableAdapter e NorthwindDataSet come esempi di adattatore e dataset dell'applicazione.

    Try
        CustomersTableAdapter.Update(NorthwindDataSet)
    
    Catch ex As DBConcurrencyException
    
        Dim customErrorMessage As String
        customErrorMessage = "Concurrency violation" & vbCrLf
        customErrorMessage += CType(ex.Row.Item(0), String)
        MessageBox.Show(customErrorMessage)
    
        ' Add business logic code to resolve the concurrency violation...
    
    End Try
    
    try
    {
        customersTableAdapter.Update(northwindDataSet);
    }
    catch (DBConcurrencyException ex)
    {
        string customErrorMessage;
        customErrorMessage = "Concurrency violation\n";
        customErrorMessage += ex.Row[0].ToString();
    
        // Add business logic code to resolve the concurrency violation...
    }
    

Vedere anche

Concetti

Novità relative ai dati

Cenni preliminari sulla visualizzazione dei dati

Altre risorse

Procedure dettagliate relative ai dati

Connessione ai dati in Visual Studio

Preparazione dell'applicazione al ricevimento di dati

Recupero di dati nell'applicazione

Visualizzazione di dati su form nelle applicazioni Windows

Modifica di dati nell'applicazione

Convalida dei dati

Salvataggio di dati