当我执行一个语句:
UPDATE t_friend SET friend_list=1930 WHERE accountID=2040
的时候, 我知道受影响的结果肯定是0行. 因为我在linux上测试了, 测试数据如下:
mysql> select friend_list from t_friend where accountID=2040;
+-------------+
| friend_list |
+-------------+
| 1930        | 
+-------------+
1 row in set (0.00 sec)mysql> UPDATE t_friend SET friend_list=1930 WHERE accountID=2040;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0上面明确指出: matched: 1  Changed: 0  Warnings: 0
而我所需要的正是 Changed: 0; 而不是 matched: 1 但是现在我发现当我在java代码里使用java.sql.PreparedStatement.executeUpdate
他给我发挥的结果是matched
--------------------------------
以上, 我有什么办法解决吗?

解决方案 »

  1.   

    你可以把sql语句修改成这样就可以了。
    UPDATE t_friend SET friend_list=1930 WHERE accountID=2040 and friend_list<>1930;
      

  2.   

    LS你明白这句话是什么意思吗:而我所需要的正是 Changed: 0; 而不是 matched: 1 
      

  3.   

    mysql> 
    mysql> select * from test
        -> ;
    +------+
    | test |
    +------+
    | iii  | 
    | iii1 | 
    | iii2 | 
    | iii3 | 
    +------+
    4 rows in set (0.00 sec)mysql> 
    mysql> 
    mysql> 
    mysql> 
    mysql> update test set test='iii' where Length(test)>1;
    Query OK, 3 rows affected (0.00 sec)
    Rows matched: 4  Changed: 3  Warnings: 0
    我把这个加上你应该明白了吧.  我要返回的是 Changed: 3
    但是java.sql.PreparedStatement.executeUpdate 给我返回的是 matched: 4你明白了吗???
      

  4.   

    问题已经解决,不敢独享,见url:
    http://mybatis-user.963551.n3.nabble.com/Return-number-of-changed-rows-td3888464.html