1

私はこの 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;

クエリの自動コミットを有効にすると、実際に機能します。ただし、手動コミットではデータベースへの変更が反映されません (手動でチェックし、更新は行われません select * from schema.t1 where a is null ではありません)。

ここで何が起こっているのかについてのアイデアはありますか?

4

1 に答える 1

0

コミット後に PreparedStatement を閉じてみてください。したがって、これを変更します。

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

これに:

con.commit();
preparedStatement.close();
于 2013-09-30T15:59:15.057 に答える