可以这么看吧.
Where条件使得UPDATE语句仅
在Fill方法最后一次被调用后
列的所有值都没有被更改过时
才更新记录。

解决方案 »

  1.   

    打个比方
    取一条数据某个字段值为2,你准备改为 3在Update时,它去检测 DataBase中的值是不是2,如果不是2,那么说明有人在你之前
    已经改过data了,所以这次更新不会成功,也就是说你的数据中含有脏数据
      

  2.   

    防止多用户同时修改数据记录啊。状态1 :用户调用fill,取得数据时该数据集的状态。
    状态2:用户调用更新方法更新数据库前一瞬数据库的状态。两个状态间是用户在对数据库进行修改的过程。
    两个状态数据集完全相同才会更新记录。如果在两个状态间有其它用户修改了数据库,这时两个状态的数据集对该用户不相同了,它就不能再更新数据。
      

  3.   

    如果你想把id为5姓名为zhang 的用户改为li
    update table set name='li' where ID=5 and name='zhang'
    这样,可以确保你要更新的这条记录在你执行更新的时候还是zhang,而没有被其他程序或者进程更改过。
      

  4.   

    如果用fill方法从数据库中取数据是field A=1,B=2,C=3
    那么生成的sql可能就是Update table set  ..... where .....
    and A=1 And B=2 And C=3
      

  5.   

    书的下一节,有这样一段话
    “当我们有一个从不同表中检索记录的更复杂的查询或者不希望UPDATE命令在更新数据库前检查数据库的改变时,可以指定自己的SQL命令."
    就是说,当自己指定SQL命令时,不检查”脏数据“,要检查的话,必须用CommandBuilder建立的UPDATE语句.?