假设我有两个sqlConnection  分别指向两个数据库.a b
     我定义两个sqldataAdapter 分别从两个数据库中取了相同结构,相同名字的表(内容未必相同)
并填充到同一个DataSet  请问如何比较容易的,而且尽量消耗少的资源,将两个表交叉更新到对方库中
. 我不知道我说明白了没有.谢谢回答.

解决方案 »

  1.   

    应该先用两个dataset对象,然后决定如何合并数据合并两个DataSet
    MyDataSet.Merge(MyOtherDataSet);
    将MyOtherDataSet对象的所有值合并到MyDataSet对象中.如果两个DataSet包含相同主键值的纪录,那么MyOtherDataSet对象的记录值被设置为myDataSet记录,另外,MyOtherDataSet中所有记录都将被添加MyDataSet对象中合并两个DataSet并保持原有值
    MyDataSet.Merge(MyOtherDataSet,true);
    保留MyDataSet的值,并加入新记录,这就可以在维护现有值的同时添加新记录合并两个具有不同模式的DataSet,指定如何处理模式差异
    MyDataSet.Merge(MyOtherDataSet,MissingSchemaAction.Add);
    MissingSchemaAction.Add
    将MyOtherDataSet中定义的新列需要添加到目标DataSet模式中
    MissingSchemaAction.AddWithKey
    将MyOtherDataSet中定义的新列需要添加到目标DataSet模式中,并保留主键信息
    MissingSchemaAction.Error
    如果目标模式和源模式不匹配则抛出System.Exception
    MissingSchemaAction.Ignore
    忽略新列最后用dataset去更新数据库的,先判断数据集是否有更新
    if (ds.HasChanged)
    {
       da.update()
    }
      

  2.   

    按照上面这位大哥的思想简单写了一段代码.发现问题.
    将ds 合并到dsother 里面 可是dsother 始终不能更新数据库.dsother.HasChanges 始终为falsestring strQuery_od1 = "select  * from TABLE1 ";
    OdbcDataAdapter Oda_1 = new OdbcDataAdapter(strQuery_od1,odbcConnection1);
    OdbcDataAdapter Oda_2 = new OdbcDataAdapter(strQuery_od1,odbcConnection2);
    DataSet ds = new DataSet();
    DataSet dsother = new DataSet();
    Oda_1.Fill(ds,"Test1");
    Oda_2.Fill(dsother,"Test1"); //先从Test1 中取出数据.
    OdbcCommandBuilder cb = new OdbcCommandBuilder(Oda_1);
    OdbcCommandBuilder cb2 = new OdbcCommandBuilder(Oda_2); dataGrid2.SetDataBinding(ds,"Test1"); dsother.Merge(ds);

     //更新到Test2 中
    dataGrid1.SetDataBinding(dsother,"Test1");

    if(dsother.HasChanges())
    {
    Oda_2.Update(dsother,"Test1");  }
      

  3.   

    就是合并后dataSet 怎么感知不到数据变化了.更新不了..
      

  4.   

    填充到DataSet里,你要表名不一样就可以了啊。
      

  5.   

    在存储过程中做吧,那样会方便很多。
    union
      

  6.   

    参看
    http://blog.csdn.net/knight94/archive/2006/05/13/726953.aspx
    http://blog.csdn.net/Knight94/archive/2006/05/01/704316.aspx
      

  7.   

    愚翁的方法我看了,写一个存储过程。但是我实际要同步的数据库字段比较多,而且,我主要想问问 我上面写的 Merge 为什么不能执行?谁能告诉我?
      

  8.   

    to 写一个存储过程。但是我实际要同步的数据库字段比较多,而且,我主要想问问 我上面写的 Merge 为什么不能执行?谁能告诉我?我的文章中已经写得很清楚了,Merge不能修改原有记录的状态。