jdbc - 使用commit执行多个语句

时间:2012-10-01 15:20:03

标签: 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();

感谢。

1 个答案:

答案 0 :(得分:5)

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

这是将autoCommit属性暴露给你,"最终用户"的重点,因此你可以控制变化与彼此之间的关系如何相互依赖。

无法做什么(我非常确定 - 自从我直接在JDBC中编程以来已经有一段时间了)是问题2提交命令而没有任何其他介于两者之间。