C#DataAdapter.Update()⽆法更新数据表中删除的数据⾏⽤DataAdapter.Update() ⽅法更新删除了部分DataRow 的 DataTable 。但是数据库中的数据没有随着更新⽽变化。
原因:DataTable 删除 DataRow 时,使⽤的是DataTable.Rows.Remove(DataRow ) 或 DataTable.Rows.RemoveAt(DataRowIndex) ⽅法。sql中update什么意思
解决⽅法:使⽤ DataTable.Rows[rowIndex].Delete() ; ⽅法删除数据。
详解如下:
DataAdapter.Update() ⽅法主要⽤来:对数据库数据进⾏批量更新(插⼊、更新、删除)。
以更新数据表 DataTable 为例:
当对数据库查出的数据表 dataTable 进⾏相关的插⼊、更新、删除操作后,使⽤DataAdapter.Update() 更新数据之前,不能调⽤DataTable.AcceptChanges()⽅法。因为:AcceptChanges()⽅法会提交⾃上次调⽤ AcceptChanges 以来对该表进⾏的所有更改。DataRowState 也发⽣更改:所有 Added 和 Modified ⾏都变为 Unchanged,Deleted ⾏则被移除。这样的话,DataAdapter.Update() 检测不到数据的变化,就不能更新数据。
DataTable.Rows.Remove(DataRow ) 和 DataTable.Rows.RemoveAt(DataRowIndex) ⽅法删除 DataRow 时,等同于先调⽤DataTable.Rows[rowIndex].Delete() , 再调⽤ DataTable.AcceptChanges()。
------------------------------------------------------------------------------------------------------------------------------------------------------------
sqldataadapter Update 删除datatable中的⾏并更新数据库
  在使⽤sqldataadapter Update⽅法更新客户端datatable的时候,如果是删除⾏,要使⽤datatable.Rows[⾏下标].Delete();
============================================================
  ⽽不是使⽤datatable.Rows.RemoveAt(⾏下标);
============================================================
  如果使⽤的是RemoveAt⽅法,在调⽤sqldataadapter.Update(datatable);时不会从数据库中删除记录。
  原因:RemoveAt是直接在DATATABLE中将ROW删除,如果⽤DELETE的话则只是标记ROW为删除,在调⽤UPDATE的时候才会真正的从DATATABLE中删除,也就是你的SQL删除语句还需要你的DATATABLE提供数据,⽽你⽤RemoveAt已经将DATATABLE中的数据彻底删除了,就没有办法为SQL删除语句提供了所以就出现这个状况,建议使⽤DELETE的⽅法

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。