DataTable.Rows.Remove(row) 与 DataTable.Rows[i].Delete()区别
2012-01-21 17:27
531 查看
今天在做ADO.NET中的adapter进行数据自动触发更新数据库功能,发现一个很奇怪的问题,原来数据操作都是自己代码去完成更新,从来没有涉及到这种方式,所以一时晕菜了。
执行以上代码,发现实体数据库并未删除,很奇怪,到最后一句debug时对应的213213记录已经确实不存在,为什么数据库一直没有删除,很困惑,后来查询MSDN里面发现DataRow有个Delete函数,马上试试,果然成功删除。
查询MSDN解释如下:
DataTable.Rows.Remove(row) :Calling Remove is the same as calling Delete and then calling AcceptChanges.
DataTable.Rows[i].Delete():A deleted row can be undeleted by invoking RejectChanges.
这样意思就很清楚,DataTable里面所有记录集都有自己的一个修改标志,证明每条记录是add,delete还是modify的,所有adpater.Update时候就会调用不同的cmd就最终同步是数据,早十年前我同事就用XML返回数据集,本地做离线编辑就是用这方式,最后再一次性提交数据库,哈,我那同事确实牛!
SQLiteDataAdapter dataAdpater = new SQLiteDataAdapter("Select cid,sd from VC", conn); dataAdpater.DeleteCommand = new SQLiteCommand("delete From VC Where cid = @cid", conn); dataAdpater.DeleteCommand.Parameters.Add("@cid", DbType.Int32, 4, "cid"); dataAdpater.DeleteCommand.Parameters["@cid"].SourceVersion = DataRowVersion.Original; DataTable categoryTable = new DataTable(); dataAdpater.Fill(categoryTable); categoryTable.PrimaryKey = new DataColumn[]{categoryTable.Columns["cid"]}; DataRow dr = categoryTable.Rows.Find(213213); categoryTable.Rows.Remove(dr); dataAdpater.Update(categoryTable);
执行以上代码,发现实体数据库并未删除,很奇怪,到最后一句debug时对应的213213记录已经确实不存在,为什么数据库一直没有删除,很困惑,后来查询MSDN里面发现DataRow有个Delete函数,马上试试,果然成功删除。
DataRow dr = categoryTable.Rows.Find(213213); dr.Delete(); dataAdpater.Update(categoryTable);
查询MSDN解释如下:
DataTable.Rows.Remove(row) :Calling Remove is the same as calling Delete and then calling AcceptChanges.
DataTable.Rows[i].Delete():A deleted row can be undeleted by invoking RejectChanges.
这样意思就很清楚,DataTable里面所有记录集都有自己的一个修改标志,证明每条记录是add,delete还是modify的,所有adpater.Update时候就会调用不同的cmd就最终同步是数据,早十年前我同事就用XML返回数据集,本地做离线编辑就是用这方式,最后再一次性提交数据库,哈,我那同事确实牛!
相关文章推荐
- DataTable中 Rows.RemoveAt(i) 和Rows(i).Delete的区别
- Datatable删除行的Delete和Remove方法的区别介绍
- Table.Rows.Remove(dr)和Table.Delete()的区别
- Datatable删除行的Delete和Remove方法的区别介绍
- dtv.Table.Rows.Remove(dr)和dr.Delete()的区别
- Table.Rows.Remove(dr)和Table.Delete()的区别
- Datatable删除行的Delete和Remove方法的区别介绍
- 对DataTable执行delete和remove的区别
- 删除行对DataTable执行delete和remove的区别
- Table.Rows.Remove(dr)和Table.Delete()的区别
- Datatable删除行的Delete和Remove方法的区别介绍
- Table.Rows.Remove(dr)和Table.Delete()的区别
- C# Rows.Remove() 和 DataRow.Delete() 的区别
- After delete Trigger throw error:The row value(s) updated or deleted either do not make the row unique or they alter multiple rows (2 rows).
- Datatable删除行的Delete和Remove方法
- Datatable删除行的Delete和Remove方法
- DataTable删除行Delete与Remove的问题
- DataTable 的DataView.RowFilter DataTable.Rows.Find 和 DataTable.Select
- csharp DataTable and DataGridView delete a Row
- DataTable.ImportRow()与DataTable.Rows.Add()的区别