JDBC:我是否需要在保证关闭的语句上重置fetchSize?

时间:2016-01-08 17:03:53

标签: java postgresql jdbc

按照书中的示例,我使用setFetchSize()查询表格。该书提到要重置setAutoCommit()setFetchSize()(该书不会在其示例中关闭statementconnection,因此我的代码段不同。

val connection = db.getConnection()
val statement = connection.prepareStatement(sql)
connection.setAutoCommit(false)
statement.setFetchSize(25)
try {
  ...
} finally {
  statement.setFetchSize(0)  // Do I need to call it if I close the stmt?
  connection.setAutoCommit(true)
  statement.close()
  connection.close()
}

重置自动提交对我来说很有意义,因为我想在close()之后,连接对象可能会在稍后的连接池中重用。

但是,如果我需要在这种情况下重置提取大小,我很好奇。 connection.prepareStatement()中的java.sql.Connection状态的Javadoc:

  

@return一个包含预编译SQL语句的新默认PreparedStatement对象

我是否正确,在关闭statement时,我不需要通过调用finally块中的setFetchSize(0)来重置提取大小?

2 个答案:

答案 0 :(得分:4)

关闭Statement后,无法重复使用。重置fetchSize本身没有任何损害,但它没有任何用处。

答案 1 :(得分:1)

如果您关闭该语句,则无法重复使用它,因此您在关闭之前或之后对其执行的任何操作都不会更改。对于连接,一旦关闭它就不能重复使用它。(对于据我所知)