如何关闭 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 或尝试使用资源,然后创建对象并使用它尝试并最终关闭。然而,这里的对象是在单独的函数中创建的,它从那里返回,然后被使用。因此,创建和使用发生在两个不同的地方。所以我想知道处理这个的两种方法

  1. 之前 Java 8
  2. 使用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.