向DataTable添加/删除DataRow的正确方法是什么?

时间:2011-02-17 12:24:55

标签: datatable datarow

我在DataAdapter.Update()的DataTable中添加和删除DataRows时遇到问题。我不断收到并发错误,但我无法确定哪里出错。

当我在DataTable中添加和删除行时会发生这种情况。

目前,我添加了这样的行:

table.Rows.Add(new string{null /*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();
    }
}

经过一些添加和删除后,Update会因并发异常而失败。什么是更好的添加行的方法?有人可以帮忙发现错误吗?感谢。

2 个答案:

答案 0 :(得分:0)

对于每次添加和删除你都使用table.acceptchanges(),希望它能正常工作

答案 1 :(得分:0)

将数据写入数据库(插入或更新)更容易,然后将数据从数据库读回数据表。