DataRow dr=(ds.Tables["dt_product"].Select("pid='"+textBox1.Text.Trim()+"'"))[0];dr["f1"]="aaa";ds.Tables["dt_product"].AcceptChanges();

adp_product.Update(ds,"dt_product");执行完后,查看数据库并没有执行相应的更新,请问是怎么回事?

解决方案 »

  1.   

    未处理的“System.Data.OleDb.OleDbException”类型的异常出现在 system.data.dll 中。请问这是什么原因???
      

  2.   

    至少在更新数据库之前不能调用AcceptChanges()。
    调用EndEdit()后再Update(),Update()后再调用AcceptChanges()吧。AcceptChanges()后再调用Update()更新数据库是最‘低级的’错误,楼主好好看看帮助文档吧。
      

  3.   

    EndEdit()是对DataTable说:我确认更新了,注意,是对内存中数据库表的副本。然后,Update()时会与数据库表比较那些更改的行,更新数据库表中相应的行。那Update()之前AcceptChanges()呢,像是告诉DataTable说:把DataTable中所有更新操作的‘痕迹’全‘删’掉。就像是当初从数据库中读进DataTable后从来没进行过更改似的。你想,这样做后Update()时,那就根本找不到该更新数据库的哪些行了。