Question

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?

Was it helpful?

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
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top