使用connection.createStatement()。executeQuery(String query);?是否安全?

时间:2010-05-10 21:41:42

标签: java mysql jdbc

执行connection.createStatement().executeQuery(String query);是否安全,或者每次使用时是否应该通过“hand”创建和关闭每个java.sql.Statement对象,即使在finally块中关闭连接也是如此?

如果一个连接在一个方法中执行多个查询,那么如果不是必须实例化和关闭每个语句,那么它将使用更少的代码。

2 个答案:

答案 0 :(得分:10)

在几乎所有JDBC驱动程序实现中关闭Connection也会隐式关闭Statement。但是,如果您使用连接池(并且您希望使用一个因为这极大地提高了连接性能),则很大,close()将不会关闭{{1但是,请将其释放回池中,然后将Connection打开。当你经常这样做时,迟早会耗尽资源,这可能会导致你的应用程序失效。

始终在尽可能短的范围内获取并关闭所有三个资源StatementConnectionStatement,无任何借口。

答案 1 :(得分:1)

将所有样板代码移动到辅助方法/类。

通过这种方式,您可以以与JDBC(或任何其他有限资源包)文档一致的方式获取/释放资源,并使您的业务逻辑不会受到JDBC混乱的污染。

虽然现在看起来对你来说似乎是一种浪费,但是将单个查询专用于业务逻辑类中的单个方法并没有错。