I know it's an old question, but perhaps it helps someone.
MSDN says the following happens when calling Update:
When using Update, the order of execution is as follows:
- The values in the DataRow are moved to the parameter values.
- The OnRowUpdating event is raised.
- The command executes.
- If the command is set to FirstReturnedRecord, then the first returned result is placed in the DataRow.
- If there are output parameters, they are placed in the DataRow.
- The OnRowUpdated event is raised.
- AcceptChanges is called.
The second Update() doesn't have any effect, because the changes to it were committed by the AcceptChanges() command.