当前位置: 首页 > 知识库问答 >
问题:

如何关闭已准备好的报表

向子安
2023-03-14

我有下面的代码,我想在它上面关闭preparedStatement对象,因为它是作为一个来自sonar的bug提出的。

  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或try with resources,然后创建对象并使用它try and close in finally。然而,在这里,对象是在单独的函数中创建的,它从那里返回,然后被使用。所以创造和使用发生在两个不同的地方。所以我想知道处理这件事的两种方法

  1. 在Java8之前
  2. 使用Java8尝试使用资源

共有1个答案

松建本
2023-03-14

在本例中,您不需要关闭语句,因为Spring的JdbcTemplate将为您完成这项工作。换句话说,这是声纳的假阳性。

PreparedStatementCreator的javadoc所述。createPreparedStatement(连接con)(强调我的):

在此连接中创建一条语句。允许实现使用准备语句。JdbcTemboard将关闭创建的语句。

 类似资料:
  • 我正在尝试更新我的mySQL数据库中的一个条目。在这里可以很好地工作,例如: 但在这里,我总是得到一个错误,但不知道为什么。 这是我的错误:

  • 我用的是c3p0。我建立了一个池,如下所示, 我有一个对象,准备初始化的几个准备好的语句。为了做到这一点,我从PooledDataSource中抓取一个连接(),然后准备一个语句(例如,)。准备好的语句作为私有变量存储在对象中,当前连接在初始化结束时关闭()。准备好的语句用于对象的方法中。 对于更新数据库的准备好的语句,这很好。但是,当我调用一个使用预处理语句()来查询数据库的方法时,我会得到以下

  • 我有一个网站,点击量很大。我遇到过一些问题,包括JDBC连接错误。 我对结束PreparedStatement有点困惑。我需要关闭PreparedStatement吗?还是只需要关闭语句就足够了? 另外,呢?我也需要关闭它吗?

  • 我正试图用BouncyCastle CMS签署一份PDF文件。签名有效,但Adobe Reader告诉我它还没有准备好LTV。 据我所知,CRL嵌入在CMS SignedData中。证书也被嵌入其中。还嵌入了时间戳。 签名是一个分离的签名,放在“预留空间”。 为什么签名还没有准备好?我是不是做错了什么? 签名测试-PDF:http://www.filedropper.com/outputx 代码:

  • 想改进这个问题吗 通过编辑此帖子,更新问题,使其只关注一个问题。 我想创建一个应用程序,使用户能够< code >捕捉屏幕他们的Android设备。就像我们在电脑中使用的任何屏幕录制软件一样,请帮助我 编辑 : 1 这里

  • 问题内容: 通过JDBC对pgbouncer执行批处理查询时,出现以下错误: 我在网上发现了错误报告,但它们似乎都适用于Postgres 8.3或更低版本,而我们正在使用Postgres 9。 这是触发错误的代码: 有人看过吗? 编辑1: 事实证明,这是使用 会话池 以外的任何方法时都会发生的pgBouncer问题。我们正在使用 事务池 ,它显然不支持准备好的语句。通过切换到 会话池 ,我们解决了