将数据集数据保存到其他数据库

时间:2012-05-12 09:37:34

标签: c# .net

我有与db连接的数据集。数据集和TableAdapterManager由VS根据连接自动创建。

我可以像this.tableAdapterManager.UpdateAll(testcheckerDataSet);那样做 它工作正常。

接下来我(使用3d party数据库编辑器)将.db文件复制到“blank_testing.db”(第2个db),然后从中删除所有数据。所以它只是没有数据的方案。

现在我(在代码中)使用来自“testchecker.db”(第一个数据库)的数据填充数据集,使用元素更改数据,并希望将数据保存到第二个数据库,然后保存到第一个数据库。我试着让它为每个适配器查找connectionString。

string originalPath = tableAdapterManager.Connection.ConnectionString;

       string ns = tableAdapterManager.Connection.ConnectionString.Replace("testchecker.db", "blank_testing.db");

        tableAdapterManager.Connection.ConnectionString = ns;
        group_testingTableAdapter.Connection.ConnectionString = ns;
        groupsTableAdapter.Connection.ConnectionString = ns;
        testingTableAdapter.Connection.ConnectionString = ns;


       this.tableAdapterManager.UpdateAll((testcheckerDataSet) testcheckerDataSet.Copy() ); // here error


        tableAdapterManager.Connection.ConnectionString = originalPath;
        group_testingTableAdapter.Connection.ConnectionString = originalPath;
        groupsTableAdapter.Connection.ConnectionString = originalPath;
        testingTableAdapter.Connection.ConnectionString = originalPath;

this.tableAdapterManager.UpdateAll( testcheckerDataSet );

但是我得到错误“并发冲突,updatecommand从1影响0”。我认为这是因为第二个数据库根本没有数据。

那么有人可以告诉我如何将当前数据集保存到另一个db文件然后再保存到第一个(原始)db?

感谢。

1 个答案:

答案 0 :(得分:2)

问题在于,当您调用UpdateAll方法时,它会尝试从数据库中查找以前的记录并进行更新。但在第二个数据库中没有记录。您可以尝试迭代DataTable中的所有DataRows并使用DataRow.SetAdded()方法更改行的DataRowState,然后它会将记录视为新添加的。

还有一件事:
SetAdded只能在DataRowRowState的{​​{1}}个实例上调用。您可以在Unchanged上致电AcceptChanges。然后,每个DataSet的{​​{1}}属性也会发生变化;添加和修改的行变为未更改,删除的行将被删除。现在您可以致电RowState