Search code examples
ado.netdataadapterbatch-updatesupdatebatchsize

How to track which row update failed in batch update


I'm using a try catch blocks to do a batch update using ADO.NET2.0, the UpdateBatchSize is set 500, I can often catch exceptions, but I don't know which row update failed, is there a way to get the actual failed row?


Solution

  • You can use event RowUpdated to get the reference of row:

    yourAdapter.RowUpdated += OnRowUpdated;
    

    Then:

    protected static void OnRowUpdated(object sender, SqlRowUpdatedEventArgs args)
    {
        if (args.Status == UpdateStatus.ErrorsOccurred)
        {
            // Reference to row which throws error
            var row = args.Row;
    
            row.RowError = args.Errors.Message;
            args.Status = UpdateStatus.SkipCurrentRow;
    
            // Do something more
        }
    }