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

C# 将数据集数据保存到其他数据库,c#,.net,C#,.net,我已将数据集连接到数据库。Dataset和TableAdapterManager是由VS基于连接自动创建的 我可以像this.tableAdapterManager.UpdateAll(testcheckerDataSet)这样做 很好用 接下来我(使用3d party数据库编辑器)将.db文件复制到“blank_testing.db”(第二个db)中,然后从中删除所有数据。所以它只是一个没有数据的方案 现在我(在代码中)用“testchecker.db”(1stdb)中的数据填充数据集,使用f

我已将数据集连接到数据库。Dataset和TableAdapterManager是由VS基于连接自动创建的

我可以像
this.tableAdapterManager.UpdateAll(testcheckerDataSet)这样做
很好用

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

现在我(在代码中)用“testchecker.db”(1stdb)中的数据填充数据集,使用from元素更改数据,并希望将数据保存到第二个db,然后保存到第一个db。我尝试使每个适配器的连接字符串发生变化

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的并发冲突”。我认为这是因为2nd db根本没有数据

有人能告诉我如何将当前数据集保存到另一个db文件,然后再保存到第一个(原始)db吗


谢谢。

这里的问题是,当您调用
UpdateAll
方法时,它会尝试从数据库中查找以前的记录并进行更新。但在第二个数据库中没有记录。您可以尝试在代码< > DATABATE 中遍历所有DATAROWS,并使用<代码> DATARO.StAdDeD()/Case>方法来更改行的代码> DATAROWSTATE < /C> >,然后考虑新添加的记录。 还有一件事:

SetAdded
只能在
DataRow
实例中调用,
RowState
未更改的情况下调用。您可以在
数据集上调用
AcceptChanges
。然后每个
DataRow
RowState
属性也会改变;添加和修改的行将保持不变,删除的行将被删除。现在可以调用
DataRow.SetAdded()

根据需要移动的数据量,我可能会尝试使用SqlBulkCopy来实现这一点。有一个读取-适配器并不昂贵。只需创建新实例。只需将记录复制到新表中即可。谢谢。很好用。但请注意一件事。在循环中调用
Row.SetAdded()
之前,我们需要调用第二个数据集的
DataSet.AcceptChanges()
,因为数据是按照我最初提到的格式进行修改的。否则它将抛出错误“SetAdded和SetModified只能在DataRowState未更改的DataRows上调用。”@PortnyaginMikhail是的,很高兴听到它在某种程度上帮助了您。用你的发现更新了我的答案。