Home All Groups Group Topic Archive Search About

SQLDataAdapter.Update exception reporting

Author
9 Jan 2006 9:11 PM
Feng
I am trying to use some code example from MSDN like the following:

Try
SqlDataAdapter1.Update(DataSet1User21, _
  "Shippers")
PopulateGridFromDB()
Catch ex As Exception
...

But for some reason it doesn't work for me this way. Each time an error
occours on the Update, instead of an exception being caught, all I see is
that no exception was thorwn, but the DataRows in the DataSet were populated
with error messages.

Is this configurable? How do I make the system just to throw the exception
so that my code can catch?

Thanks

Feng

Author
9 Jan 2006 9:21 PM
Jesús López
The SqlDataAdapter class has the property ContinueUpdateOnError. If this
property is set to true, no exceptions are thrown by the Update method. In
this case you should check DataSet.HasErrors

Regards from Madrid (Spain)
Jesús López
MVP

Show quote
"Feng" <F***@discussions.microsoft.com> escribió en el mensaje
news:55F179F1-F67C-49C5-BD10-7F7907106E59@microsoft.com...
>I am trying to use some code example from MSDN like the following:
>
> Try
> SqlDataAdapter1.Update(DataSet1User21, _
>  "Shippers")
> PopulateGridFromDB()
> Catch ex As Exception
> ...
>
> But for some reason it doesn't work for me this way. Each time an error
> occours on the Update, instead of an exception being caught, all I see is
> that no exception was thorwn, but the DataRows in the DataSet were
> populated
> with error messages.
>
> Is this configurable? How do I make the system just to throw the exception
> so that my code can catch?
>
> Thanks
>
> Feng
Author
10 Jan 2006 1:36 PM
Andre Botelho
Just to improve your research... you can use the RowUpdated event to
catch the exceptions per datarow during the update process.

I used in a project the code is like this:

private void OnRowUpdated(object sender, SqlRowUpdatedEventArgs e)
{
  if (e.Errors != null)
  {
   string Tablename = e.Row.Table.TableName;
   ErrorList.Append("Error updating table " + Tablename + ": "+
e.Errors.Message + Environment.NewLine);
    for (int Index = 0; Index <= e.Row.Table.Columns.Count + 1; Index++)
    {
    string ColumnName = e.Row.Table.Columns[Index].ColumnName;
    string Value = e.Row[Index].ToString();
        ErrorList.Append(ColumnName + " = " + Value +
Environment.NewLine);
    }
  }
}

ErrorList is a StringBuilder object that I have in the class to log all
exceptions. In the code above the result will be the tablename and all
it's columns and it's values. It helped me a lot in finding some bugs. I
hope it will be useful for you too.

regards from Brazil,

Andre Botelho

--
Sent via .NET Newsgroups
http://www.dotnetnewsgroups.com

AddThis Social Bookmark Button