jdbc - 使用commit执行多个语句

use*_*323 1 jdbc

我有多个准备好的陈述.我是否需要为每个语句执行'connection.commit'或在最后一个语句后只调用一次?

Connection connection = datasource.getConnect();
connection.setAutoCommit(false);
PreparedStatement pstmt1 = connection.prepareStatement(query1);
pstmt1.executeUpdate();
connection.commit();

PreparedStatement pstmt2 = connection.prepareStatement(query2);
pstmt2.executeUpdate();
connection.commit();

PreparedStatement pstmt3 = connection.prepareStatement(query3);
pstmt3.executeUpdate();
connection.commit();


Or

Connection connection = datasource.getConnect();
connection.setAutoCommit(false);
PreparedStatement pstmt1 = connection.prepareStatement(query1);
pstmt1.executeUpdate();

PreparedStatement pstmt2 = connection.prepareStatement(query2);
pstmt2.executeUpdate();

PreparedStatement pstmt3 = connection.prepareStatement(query3);
pstmt3.executeUpdate();

connection.commit();
Run Code Online (Sandbox Code Playgroud)

谢谢.

dav*_*vek 5

如果设置autocommit = false,则可以选择何时提交事务.在最好的情况下,只有你可以判断它取决于原子性,事务隔离等.

这就是将autoCommit属性暴露给你的最终点,即"最终用户",这样你就可以控制变化如何与彼此相关/相互依赖.

不能做的事情(我很确定 - 因为我直接用JDBC编程已经有一段时间了)是问题2提交命令,其间没有任何其他命令.