当前位置: 代码迷 >> Java Web开发 >> 关于java.sql.Statement.executeUpdate()的返回值,该怎么处理
  详细解决方案

关于java.sql.Statement.executeUpdate()的返回值,该怎么处理

热度:8725   发布时间:2013-02-25 21:18:53.0
关于java.sql.Statement.executeUpdate()的返回值
我使用Java JDBC连接MySQL 5.1.32,使用驱动程序为<<mysql-connector-java-5.1.7-bin.jar>>。
当我使用SQL语句update数据时,MYSQL数据库里的数据没变,但在java.sql.Statement类执行executeUpdate()后,
程序返回给我的却是1,按Java文档里的说,数据库里有1行数据已经被改变了。但实际上是没有任何记录受到影响。
下面是用同一条UPDATA SQL语句,执行2次。执行第2次的时候,数据库的记录不可能被改变(因为第一次已经被改变了),
但我却得到的是1,即有1行受到影响。

为什么会这样??

我现在想行到这个java.sql.Statement.executeUpdate()值来判断数据库已发生改变,有其它办法实现吗?
=====================================================

import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
 
public class J {
 
  public static void main(String[] args) throws Exception {
  Connection cnn;
  String url = "jdbc:mysql://localhost:3306/opsdb";
  String user = "0193";
  String password = "123";
  Class.forName("com.mysql.jdbc.Driver");
  cnn = (Connection) DriverManager.getConnection(url, user, password);
  java.sql.Statement t = cnn.createStatement();
  String sql="Update history set action_user='01932' where id=75";
  int i1 = t.executeUpdate(sql);
  System.out.println("i1="+i1);
 
  int i2 = t.executeUpdate(sql);
  System.out.println("i2="+i2);
  t.close();
  cnn.close();
 
  }
}

======================
程序输出如下:
i1=1
i2=1

------解决方案--------------------------------------------------------
这不行吧,所谓的值被改变,我想就是更新成功了,至于更新前后是否一样,这个不是executeUpdate会关心的
它只是告诉你,这个语句执行成功了,就返回1
所以我想具体的还是需要你自己对比
  相关解决方案