DataAdapter Events

The FillError event is most commonly raised when the data being added violates a constraint in the DataSet or when the data being added can’t be converted to a .NET Framework data type without a loss of precision. When a FillError event occurs, the current row isn’t added to the DataTable. Handling the FillError event allows the error to be resolved and the row to be either added or ignored before resuming the Fill( ) operation with the next row.

The FillError event handler receives an argument of FillErrorEventArgs, which contains specific data about the event that can effectively respond to and handle the error. The Continue property of the FillErrorEventArgs argument determines whether an exception is thrown or processing continues because of the error.

The following example demonstrates handling the FillError event when filling a table containing three columns:

SqlDataAdapter da;

// ... code to set up the data adapter

da.FillError += new FillErrorEventHandler(da_FillError);

DataSet ds = new DataSet();

da.Fill(ds, "MyTable");

private void da_FillError(object sender, FillErrorEventArgs e)


    // ... code to identify and correct the error

    // add the fixed row to the table

    DataRow dr = e.DataTable.Rows.Add(new object[] {e.Values[0],

        e.Values[1], e.Values[2]});


    // continue the Fill with the rows remaining in the data source

    e.Continue = true;


The RowUpdating event is raised before changes to a row are submitted to the data source. The RowUpdating event handler can ...

Get ADO.NET in a Nutshell now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.