DataRow 和 DataTable 类都具有 AcceptChanges 方法。在 DataTable 级别调用 AcceptChanges,会为要调用的每个 DataRow 导致 AcceptChanges 方法。同样,对 DataSet 调用 AcceptChanges 会导致对 DataSet 中的每个表调用 AcceptChanges。照这样,您可在多个级别上调用该方法。调用 DataSet 的 AcceptChanges 将使您只需调用一次,即可对所有次级对象(例如表和行)调用该方法。
当对 DataSet 调用 AcceptChanges 时,任何仍处于编辑模式的 DataRow 对象都将成功结束其编辑。每个 DataRow 的 RowState 属性也会更改;Added 和 Modified 行变为 Unchanged,而 Deleted 行则被移除。
如果 DataSet 包含 ForeignKeyConstraint 对象,则调用 AcceptChanges 方法还将导致实施 AcceptRejectRule。
下面的示例将 DataRow 添加到 DataSet 的 DataTable 中。然后针对 DataSet 调用 AcceptChanges 方法,该数据集将级联到它包含的所有 DataTable 对象。
private void AcceptChanges()
{
DataSet myDataSet;
myDataSet = new DataSet();
// Not shown: methods to fill the DataSet with data.
DataTable t;
t = myDataSet.Tables["Suppliers"];
// Add a DataRow to a table.
DataRow myRow;
myRow = t.NewRow();
myRow["CompanyID"] = "NWTRADECO";
myRow["CompanyName"] = "NortWest Trade Company";
// Add the row.
t.Rows.Add( myRow );
// Calling AcceptChanges on the DataSet causes AcceptChanges to be
// called on all subordinate objects.
myDataSet.AcceptChanges();
}
注意:datatable的每一列都有个状态。忘记有哪些了。如果是改变过的,在update的时候就会跟据修改过的那些资料去修改数据库,没有修改的不动。如果调用了acceptchanges,这些改变后的状态都会被置为未改变。因此update的时候,就不会修改数据库。