从DataTable中添加/删除DataRow的正确方法是什么
问题描述:
我面临的问题是从用于DataAdapter.Update()的DataTable中添加和删除DataRows。我不断收到并发错误,但我无法确定哪里出错。从DataTable中添加/删除DataRow的正确方法是什么
它发生在我从DataTable中添加和删除行时。
目前,我行添加这样的:
table.Rows.Add(new string{null /*pk*/, "composite_FK1", "composite_FK2", "composite_FK3"});
,我删除数据表这样的一个逻辑行:
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();
}
}
经过几次添加和删除,更新失败并发异常。什么可以是更好的方式来添加行?任何人都可以帮忙发现错误吗?谢谢。
答
更容易将数据写入到数据库(插入或更新),然后从数据库中读取数据回到你的数据表中。
答
对于每一个添加和删除u使用table.acceptchanges(),希望它会正常工作
@ kaylyan你是说每次更新后?在AcceptChanges删除所有RowState信息之前...我是不是正确? – Jake 2011-02-17 12:38:54
如果删除数据表中的一行,并且仍然希望删除更多行,则在删除所有这些行之后,此acceptchanges()属性与Update相同。 – 2011-02-18 08:42:04