STS / Eclipse显示潜在的资源泄漏,为什么?

时间:2018-08-20 07:24:56

标签: java jdbc

我有一个连接到MySQL并在ResultSet中获取数据的服务方法,在finally中关闭了PreparedStatement,但是STS在return语句上显示警告为

  

潜在的资源泄漏:此处可能无法关闭“ resultSet”   位置

方法:

    public boolean checkData() {
        Connection dbConnection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        boolean status = false;
        try {
            dbConnection = icrud.getConnection();
            preparedStatement = dbConnection.prepareStatement("query on table");
            resultSet = preparedStatement.executeQuery();
            if (resultSet.next()) {
                status = resultSet.getBoolean("STATUS");
            }       
            return status;  //Potential resource leak warning shows here.
        } catch (Exception e) {
            LOGGER.error("Exception Occurred:: " , e);
        } finally {

            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                    preparedStatement = null;
                }
            } catch (SQLException e) {
                LOGGER.error("Exception Occured while Closing statement" , e);
            }

            try {
                if (dbConnection != null) {
                    dbConnection.close();
                    dbConnection = null;
                }
            } catch (SQLException e) {
                LOGGER.error("Exception Occured while closing connection" , e);
            }
        }
        return status;
    }

根据文档

  

关闭Statement对象时,如果当前的ResultSet对象,则为   一个存在,也关闭了。

因此,尽管显示警告,我还是最终关闭了Statement。我已经通过关闭结果集进行检查,最后仍然没有警告。

是假阳性吗?还是我做错了什么?

1 个答案:

答案 0 :(得分:-2)

您正在返回“状态”而不关闭连接。进入return语句时,“ finally”子句不会执行。