C# DataAdapter.Update() 無法更新數據表中刪除的數據行


用DataAdapter.Update() 方法更新刪除了部分DataRow 的 DataTable 。但是數據庫中的數據沒有隨着更新而變化。

 

原因:DataTable 刪除 DataRow 時,使用的是DataTable.Rows.Remove(DataRow ) 或 DataTable.Rows.RemoveAt(DataRowIndex) 方法。

 

解決方法:使用 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的方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM