很紧急:dataset更新了但是后台数据表没有更新呢?有两张表结构一模一样的,分别存在ds1和ds2中我需要将ds1合并到ds2中
代码如下:首先取得数据
ds1.fill
ds2.fill...
ds2 = ds1.Clone
dad.Fill(ds2, "a")
ds2.Merge(ds1)dad.Update(ds2.Tables(0))程序执行也没有报错,但是后台的数据确没有更新.请问该怎么办呢??

解决方案 »

  1.   

    首先要知道DataAdapter.Update方法的运行原理,原始的DataTable,所有行的状待(DataRowState)都是没有改变的
    当操作其中的数据时,相应的行状态会被更改,例如删除一行,DataRowState状态就被改为Delete
    最后,调用UPdate()的时候就检索一下行状态,凡是有更改的行都自动生成一下sql语句反映到数据库有不少人有这个误会:DataAdapter.Update方法是跟数据库的数据进行比较有更改的就更新==绝对是个误解!ds2.Merge(ds1),那么ds2就成了ds1了,里面的数据行的状态没有记录任何更改,所以能成功运行,但是数据没有更改;遗憾的是DataRowState是个只读属性,没办法手动更改之,因此只能一行一行地进行处理,而不能使用merge方法
      

  2.   

    不是很理解,那DataAdapter.Update有色么用呢?如何更新数据呢?不见得一直放在dataset中巴!!难道在.net中要插入数据只能使用command的sql语句了嘛??
      

  3.   

    可以这样,
    OleDbCommandBuilder  mybuilder=new OleDbCommandBuilder(dad);
    dad.Update(ds2.Tables(0);