我有多个准备好的陈述.我是否需要为每个语句执行'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)
谢谢.
如果设置autocommit = false,则可以选择何时提交事务.在最好的情况下,只有你可以判断它取决于原子性,事务隔离等.
这就是将autoCommit属性暴露给你的最终点,即"最终用户",这样你就可以控制变化如何与彼此相关/相互依赖.
你不能做的事情(我很确定 - 因为我直接用JDBC编程已经有一段时间了)是问题2提交命令,其间没有任何其他命令.
| 归档时间: |
|
| 查看次数: |
2968 次 |
| 最近记录: |