Datatable刪除行的Delete和Remove方法


1、DataRow row = dt.NewRow();
     一個DataRow對象剛被創建之后其狀態是Detached,是孤立的一個存在,所以建立了DataRow之后在DataRow中的單元填充了數據后還要通過
    DataTable.Rows.Add(row);
    方法將此DataRow添加到DataTable,DataRow添加到DataTable后, 這個DataRow的狀態就轉變為Added。
    當修改了這個DataRow后,這個DataRow狀態轉為Modified,當用
    DataRow.Delete()方法刪除DataRow后,DataRow狀態將轉為Deleted,不過此行還存在在DataTable中的,只是狀態改變了,
    這時用DataTable.Rows.Count查看行數,跟刪除前是一樣的。
    一旦調用了DataTable.AcceptChanges();方法后,所有的行將根據不同的狀態做不同的處理,Added、Modified、Unchanged將保留當前值,Deleted的行將從DataTable中移除,最后所有的行的狀態都置為Unchanged。當DataTable是從DataAdapter.Fill(DataSet,DataTable)方法填充而形成的,Fill()方法將自動調用AcceptChanges()方法,將DataTable的行狀態都置為Unchanged。並且,如果Fill方法中指定的那個DataTable在要填充的那個DataSet不存在時,會生成一個跟數據源表同樣的結構的DataTable並填充數據,數據庫跟着一起變化了

2、只有在調用了DataTable.Remove(DataRow)方法后,此DataRow才被從DataTable移除,狀態也回復到Detached孤立狀態,而后台數據庫沒有變化。

用於從 DataTable 對象中刪除 DataRow 對象的方法有兩種:DataRowCollection 對象的 Remove 方法和 DataRow 對象的 Delete 方法。Remove 方法從 DataRowCollection 中刪除 DataRow,而 Delete 方法只將行標記為刪除。當應用程序調用 AcceptChanges 方法時,才會發生實際的刪除。通過使用 Delete,您可以在實際刪除之前先以編程方式檢查哪些行標記為刪除。如果將行標記為刪除,其 RowState 屬性會設置為 Deleted。

所以:
     在將 DataSet 或 DataTable 與 DataAdapter 和關系型數據源一起使用時,用 DataRow 的 Delete 方法移除行。
     Delete 方法只是在 DataSet 或 DataTable 中將行標記為 Deleted,而不會移除它。
     而 DataAdapter 在遇到標記為 Deleted 的行時,會執行其 DeleteCommand 方法以在數據源中刪除該行。
     然后,就可以用 AcceptChanges 方法永久移除該行。

     如果使用 Remove 刪除該行,則該行將從表中完全移除,但 DataAdapter 不會在數據源中刪除該行。


免責聲明!

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



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