ds.AcceptChanges();调用之后,Table里面的Row的RowState全部重置,根本不会去改写数据库了

解决方案 »

  1.   

    另外,这个xml能不能传递Row的RowState,没有研究过
      

  2.   

    就是说在updateds之前不能AcceptChanges()?
      

  3.   

    使用SqlDataAdapter的Update方法来更新数据的时候
    必须要给DataAdapter指定一个commandbuilder
    在你程序的这一行:
    SqlDataAdapter ada=new SqlDataAdapter(sql,conn);
    之后加上
    SqlCommandBuilder cmdbuilder = new SqlCommandBuilder(ada);
    就可以了。
    使用SqlDataAdapter的Update方法还有个前提条件:
    select 语句出的结果集必须要有主键
      

  4.   

    还应该修改这两行:
    ds.AcceptChanges();
    ada.Update(ds,table);
    改为
    DataTable dt_new = ds.tables[0].GetChanges();
    ada.Update(dt_new);
      

  5.   

    Violation of PRIMARY KEY constraint 'PK_QYQK_1'. Cannot insert duplicate key in object 'QYQK'. 
    报这个错误,可是这个表是主键的呀!
      

  6.   

    TianTeRrAnShang()  说的对,因为你没有生成update语句,你在设计时生成一个数据集你就会明白ado.net的insert,update,delete,select是如何执行的了。会生成四个sqlcommmand 里面保存想应的sql语句
      

  7.   

    是不是因为我是先删除的ROW再添加的,所有不是更新这条记录,而是去插入?有没有办法解决我的这个问题呀?
      

  8.   

    Cannot insert duplicate key in object 'QYQK'. 
    中文意思是:
    不能在'QYQK'这个字段上插入重复的值
    QYQK是主键,当然不能插入重复的值
      

  9.   

    for()
    {
    table.Rows[i].Delete();
    }
    插入之前先把原来的DataSet中的table的每一行清除,试试看吧