DataTable tbl = DataSet0.Tables[0].Copy();  // DataSet0.Tables[0] 是经过Fill及修改的
DataSet ds = new DataSet();
ds.Tables.Add(tbl);
......  // DataAdapter,CommandBuilder 等
da.Update(ds);  // 此处出现异常,说是并发冲突
如果不用第一行,而直接用DataSet0,工作是正常的,使用Copy得到的表(我必须要用),就会出现并发冲突

解决方案 »

  1.   

    da.Update(ds);//?????da是什么东西
      

  2.   

    关键是COPY过来的时候有没有把修改前后的所有版本都COPY过来。如没有的话是肯定不行的。现在这台机器没装。改天去试。
      

  3.   

    把问题再重新说一下,下面代码放在一个函数中,该函数只有第一次运行是正确的,以后再运行就会出现并发冲突DataTable tb1 = ds.Tables[0].Copy();    // ds 是原始DataSetds2.Tables.Clear();  // ds2 是另一个DataSet
    ds2.Tables.Add(tb1);
    theAdapter.SelectCommand.CommandText = "select * from t1";
    SqlCommandBuilder bdr = new SqlCommandBuilder(theAdapter);theAdapter.Update(ds2);  // 此处如果换成 Update(ds),就可以反复运行,没有问题;如果是ds2,就只能运行一次,第一次是正确的,以后在运行到这里,就会出现并发冲突
      

  4.   

    如果不是fill的ds好像是不能更新的并且如果da断开连接,也是不能更新的
      

  5.   

    Copy() 只是将数据复制,并未在新的数据集中保留其数据行的状态.
      

  6.   

    hjf1223
    zhongwanli应该怎样解决呢?给个思路就行!还有,这样也不应该出现并发冲突阿?
      

  7.   

    zhongwanli说得没错.
    你可以用tb1.ImportRow()的方法循环导入ds.Tables[0]的记录,不要用copy() 试试.
      

  8.   

    http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx