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

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

鲁才艺
2023-03-14

我有一个连接到MySQL的服务方法,可以在ResultSet中获取数据,最后在中关闭它的PreparedStatement,但是STS在返回语句中显示警告

潜在的资源泄漏:此位置可能无法关闭结果集

方法:

    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;
    }

根据文件,

关闭语句对象时,其当前结果集对象(如果存在)也将关闭。

所以我在最后关闭语句虽然它显示警告。我已经检查了最后关闭结果集仍然警告不关闭。

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


共有1个答案

鱼意远
2023-03-14

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

 类似资料: