如何关闭 PreparedStatement
How to close PreparedStatement
我有以下代码,我想在其上关闭 preparedStatement 对象,因为它作为声纳的错误引发。
public myfunction() throws SQLException {
PreparedStatementCreator preparedStatementCreator = new PreparedStatementCreator() {
String query = "";//let us assume a query
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement preparedStatement= connection.prepareStatement(query);
preparedStatement.setString();
preparedStatement.setString();
}
};
int rows;
try
{
rowNumbers = jdbcTemplate.update(preparedStatementCreator);
}
catch(....)
{
}
catch(....)
{
}
catch(....)
{
}
}
如何关闭 preparedStatement 对象?
我看到的大多数示例大多使用 try/finally 或尝试使用资源,然后创建对象并使用它尝试并最终关闭。然而,这里的对象是在单独的函数中创建的,它从那里返回,然后被使用。因此,创建和使用发生在两个不同的地方。所以我想知道处理这个的两种方法
- 之前 Java 8
- 使用Java 8 尝试使用资源
在这种情况下您不需要关闭语句,因为 Spring 的 JdbcTemplate
会为您完成。也就是说,这是Sonar的误报。
如 PreparedStatementCreator.createPreparedStatement(Connection con)
的 javadoc 中所述(强调我的):
Create a statement in this connection. Allows implementations to use
PreparedStatements. The JdbcTemplate will close the created
statement.
我有以下代码,我想在其上关闭 preparedStatement 对象,因为它作为声纳的错误引发。
public myfunction() throws SQLException {
PreparedStatementCreator preparedStatementCreator = new PreparedStatementCreator() {
String query = "";//let us assume a query
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement preparedStatement= connection.prepareStatement(query);
preparedStatement.setString();
preparedStatement.setString();
}
};
int rows;
try
{
rowNumbers = jdbcTemplate.update(preparedStatementCreator);
}
catch(....)
{
}
catch(....)
{
}
catch(....)
{
}
}
如何关闭 preparedStatement 对象? 我看到的大多数示例大多使用 try/finally 或尝试使用资源,然后创建对象并使用它尝试并最终关闭。然而,这里的对象是在单独的函数中创建的,它从那里返回,然后被使用。因此,创建和使用发生在两个不同的地方。所以我想知道处理这个的两种方法
- 之前 Java 8
- 使用Java 8 尝试使用资源
在这种情况下您不需要关闭语句,因为 Spring 的 JdbcTemplate
会为您完成。也就是说,这是Sonar的误报。
如 PreparedStatementCreator.createPreparedStatement(Connection con)
的 javadoc 中所述(强调我的):
Create a statement in this connection. Allows implementations to use PreparedStatements. The JdbcTemplate will close the created statement.