我使用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
所以我想具体的还是需要你自己对比