准备好的声明共享连接

时间:2014-08-12 14:46:04

标签: java sql transactions sql-update

有一个示例显示使用交易:

con.setAutoCommit(false);
updateSales = con.prepareStatement(updateString);
updateTotal = con.prepareStatement(updateStatement);
...
con.commit();
...
finally
updateSales close
updateTotal close

如果我想将两个预准备语句移动到共享连接/事务的单独方法中,每个方法都从父方法调用,我看不到如何处理关闭预准备语句,因为父方法会打开连接然后提交它。

parentmethod:
con.setAutoCommit(false)
method1(con)
method2(con)
con.commit()

不需要像这样设计它。分开更新是合乎逻辑的。

1 个答案:

答案 0 :(得分:0)

为什么不将PreparedStatement的范围设置为类级别?然后,父方法可以有一个finally块,用于关闭子方法可能已打开的所有资源。

这仍然不是最佳解决方案(通常您需要使用相同的方法打开资源来关闭资源)。

在我看来,优雅的方式是将PreparedStatement电话与其他资源一起保持在父级别。