一个有数据的dataset,对里面的数据修改过,并添加了Row后利用sqldataadapter.update(),数据库里的表没改变,是什么原因阿
急!!!

解决方案 »

  1.   

    可能的原因
    1、在Update前有没有AcceptChanges或者RejectChanges
    2、适配器中的InsertCommand和UpdateCommand正确么?
    3、有没有被触发器干扰
      

  2.   

    使用了acceptchanges()命令是使用默认生成的第三点不太清楚,请多解释点,多谢
      

  3.   

    有主健的只是主健用的是[index]
      

  4.   

    ***************************
    使用了acceptchanges()命令是使用默认生成的第三点不太清楚,请多解释点,多谢
    *****************************
    你如果在update前使用了acceptchanges(),当然不会更新数据库,acceptchanges()会把dataset的修改状态置为未修改。
      

  5.   

    我也刚琢磨出来,利用sqldataAdapter.update()方法,表一定要有主键
      

  6.   

    例子 呵呵 昨天也是遇到这个问题 自己写的 你可以参考一下
    OleDbCommand cmd = new OleDbCommand("SELECT * FROM Document", this.conn);
                this.adapter.SelectCommand = cmd;
                OleDbCommandBuilder builder = new OleDbCommandBuilder(this.adapter);
                DataRow[] document = this.dataAccess.Tables["Document"].Select("DocumentId=" + documentId);
                document[0]["ClassId"] = newClassId;
                document[0]["Title"] = newTitle;
                document[0]["RichText"] = newRichText;
                document[0]["PlainText"] = newPlainText;
                document[0]["CreateDate"] = newGreateDate;
                this.adapter.Update(this.dataAccess, "Document");
      

  7.   

    还忘了补充,一定要有private SqlCommandBuilder myBuilder;
    private SqlDataAdapter myDataAdapter;myBuilder = new SqlCommandBuilder(myDataAdapter);
      

  8.   

    update是将当前DataSet中行状态为新增或者修改的通过开始制定的sqlcommand来提交至数据库提交成功后再调用Acceptchanges方法来使得Dataset中刚才有改动的数据也成为合法数据
      

  9.   

    刚又发现一个问题,如果把设为主键的那项,用了类似RTRIM()这样的函数,也是没办法update()的