DR.AcceptChanges();需要放在DBAdapter.Update(DS,"Data")后面才能更新数据库 如果放在前面则数据级已经将需要修改的数据更新为不需要给新

解决方案 »

  1.   

    ju_feng(NorthSky)说的对,AcceptChanges会把DataRowState变为Unchanged,所以在DataAdapter.Update前AcceptChanges()是不能更改数据库的.
    你最好在DR["State"] = 1;后面加一个DR.EndEdit();这样会把DataRowVersion.Proposed变为DataRowVersion.Current.另外,数据库里相应表必须有一个可以唯一标识行的字段,比如定义一个primary key.
      

  2.   

    因为用DBAdapter.Update(DS,"Data")的时候,需要检测你的行的RowState,只在检测到了RowState为Added,Modified,delete才做相应的更新,而用了AcceptChanges后,你的RowState就变成了Unchanged了。所以就不能更新了。
      

  3.   

    (补充)再加上这句,它的作用是应用程序针对 SqlDataAdapter 调用 Update 时,需要该对象对数据库执行更新操作而自动生成Update的SQL语句。
    DBAdapter.UpdateCommand=custCB.GetUpdateCommand();