向/从 DataTable 添加/删除 DataRow 的正确方法是啥
Posted
技术标签:
【中文标题】向/从 DataTable 添加/删除 DataRow 的正确方法是啥【英文标题】:What is the correct way to add/delete a DataRow to/from DataTable向/从 DataTable 添加/删除 DataRow 的正确方法是什么 【发布时间】:2011-02-17 12:24:55 【问题描述】:我遇到了从用于 DataAdapter.Update() 的 DataTable 添加和删除 DataRows 的问题。我不断收到并发错误,但我不知道哪里出了问题。
当我在 DataTable 中添加和删除行时会发生这种情况。
目前,我添加这样的行:
table.Rows.Add(new stringnull /*pk*/, "composite_FK1", "composite_FK2", "composite_FK3");
然后我像这样删除 DataTable 中的最后一个逻辑行:
DataRow[] rows = table.Select(string.Empty, string.Empty, DataViewRowState.CurrentRows);
if (rows.Length > 0)
DataRow row = rows[rows.Length - 1];
if (row.RowState == DataRowState.Added)
// directly remove this row because it is not in the database yet
table.Rows.Remove(row);
else
// mark this row for deletion from the database
row.Delete();
在几次添加和删除之后,更新失败并出现并发异常。添加行的更好方法是什么?任何人都可以帮助找出错误吗?谢谢。
【问题讨论】:
【参考方案1】:将数据写入数据库(插入或更新)更容易,然后将数据从数据库读回数据表。
【讨论】:
【参考方案2】:每次添加和删除都使用 table.acceptchanges(),希望它能正常工作
【讨论】:
@kaylyan 你是在每次更新后说的吗?在 AcceptChanges 删除所有 RowState 信息之前...我不对吗? 如果,你删除了数据表中的一行,但如果你想删除更多的行,在最后删除所有这些行之后,这个 acceptchanges() 属性,同样适用于更新。以上是关于向/从 DataTable 添加/删除 DataRow 的正确方法是啥的主要内容,如果未能解决你的问题,请参考以下文章
将 DataTable 从一个 DataSet 复制到另一个