首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连接关闭时ResultSet是否未关闭?

连接关闭时ResultSet是否未关闭?
EN

Stack Overflow用户
提问于 2008-09-19 17:35:36
回答 5查看 66K关注 0票数 49

我一直在对我们喜欢的一个项目和FindBugs进行代码审查(主要使用像FindBugs这样的工具),并将以下代码标记为错误的(伪代码):

代码语言:javascript
复制
Connection conn = dataSource.getConnection();

try{
    PreparedStatement stmt = conn.prepareStatement();
    //initialize the statement
    stmt.execute();
    ResultSet rs =  stmt.getResultSet();
    //get data
}finally{
    conn.close();
}

错误是此代码可能不会释放资源。我发现ResultSet和语句并不是封闭的,所以我最终把它们封闭起来:

代码语言:javascript
复制
finally{
    try{
        rs.close()
    }catch(SqlException se){
        //log it
    }
    try{
        stmt.close();
    }catch(SqlException se){
        //log it
    }
    conn.close();
}

但我在许多项目中遇到了上述模式(来自相当多的公司),并且没有人关闭ResultSets或语句。

你有没有遇到过ResultSets和语句在连接关闭时没有关闭的问题?

我只找到了this,它指的是Oracle在关闭连接时存在关闭ResultSets的问题(我们使用Oracle db,因此我进行了更正)。java.sql.api在Connection.close() javadoc中什么也没说。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/103938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档