向/从 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 复制到另一个

c#中datatable怎么添加列名

向 p:datatable 添加新行,然后提交内容

向新建dataset中添加数据

jquery的dataTable怎么使用 , 需要引入啥js文件,怎么创建表和怎么添加删除数据?

无法向作为两个嵌套关系中的子表的 DataTable 添加约束