java - 更新准备好的语句未提交

标签 java mysql jdbc-odbc

我有这个 java 代码,不幸的是更新所做的更改没有传播到 mySQL 数据库:

            con = DriverManager.getConnection(url, user, password);
            con.setAutoCommit(false);
            preparedStatement = con.prepareStatement("update schema.t1 inner join 
                    schema.t2  on (t1.id=t2.id)" +
                   " set t1.a=t2.a, t1.b=t2.b" );


            int r = preparedStatement.executeUpdate();

            System.out.println("execute update result = "+r);
            preparedStatement.close();
            con.commit();
            con.close;

如果我启用自动提交查询,确实有效;然而,手动提交不会将更改传播到数据库(我手动检查并且没有更新从 schema.t1 中选择 *,其中 a 不为空)。

对这里可能发生的事情有什么想法吗?

最佳答案

尝试在提交后关闭 preparedStatement。所以改变这个:

preparedStatement.close();
con.commit();

对此:

con.commit();
preparedStatement.close();

关于java - 更新准备好的语句未提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19098373/

相关文章:

java - Custom HashMap代码问题的实现

php - 对 PHP 字符串的 MySQL 查询停止在最后一列上写定界符

mysql存储过程跳过空参数

python - Angular、Flask、mysql.connector 编程错误 : Wrong number of arguments

java - 异常: Operating System error code 3

使用随机填充的 Java DES 加密

java - Java中将2个ArrayList浅拷贝到1个

java - 在类中使用静态代码加载属性文件

java - 替代 JDBC-ODBC 桥

java - unicode 支持使用数据源名称与 sqlserver 进行 jdbc 连接