首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >com.ibm.db2.jcc.am.SqlException:无效操作:结果集已关闭。ERRORCODE=-4470,SQLSTATE=null

com.ibm.db2.jcc.am.SqlException:无效操作:结果集已关闭。ERRORCODE=-4470,SQLSTATE=null
EN

Stack Overflow用户
提问于 2013-03-06 12:52:00
回答 2查看 8.2K关注 0票数 0

我有一个相当简单的portlet,它显示了门户网站的访问者数量(在线,每日,每周,每月,每年)。

在doView方法的portlet类中,我首先调用一个方法,该方法对表进行插入(关于新访问者的信息)。在我逐个调用了5个方法后,这些方法在同一个表上进行计数选择。它们都很相似,只是它们的查询不同。其中一个方法实现如下:

代码语言:javascript
运行
复制
public static Integer getOnline() {
    Integer res = null;
    Statement stmt = null;
    ResultSet rs = null;

    try {
        stmt = getConnection().createStatement();
        rs = stmt.executeQuery(query);
        if (rs.next()) {
           res = new Integer(rs.getString("1"));
        }
    } catch (SQLException e) {
        log.error("Excepton: " + e);
    } finally {
        if (rs != null) {
            try { rs.close(); } catch (SQLException e) { log.warn("Error closing result set: ", e); }
            rs = null;
        }

        if (stmt != null) {
            try { stmt.close(); } catch (SQLException e) { log.warn("Error closing statement: ", e); }
            stmt = null;
        }
    }

    return res;
}

获取连接:

代码语言:javascript
运行
复制
public static Connection getConnection() {
    try {
        if (connection == null) {
            if (dataSource == null) {
                dataSource = (DataSource) new InitialContext().lookup(dataSourceName);
            }

            connection = dataSource.getConnection();
        }
    } catch (Exception e) {
        log.error("Error on opening a connection: ", e);
    }

    return connection;
}

连接在doView方法结束时关闭。偶尔我也会遇到这样的异常:

代码语言:javascript
运行
复制
com.ibm.db2.jcc.am.SqlException: [jcc][t4][10120][10898][4.14.88] Invalid operation: result set is closed. ERRORCODE=-4470, SQLSTATE=null

从选择的一种或几种方法中选择。有时还会出现以下错误:

代码语言:javascript
运行
复制
com.ibm.websphere.ce.cm.ObjectClosedException: DSRA9110E: Connection is closed.

com.ibm.websphere.ce.cm.ObjectClosedException: DSRA9110E: Statement is closed.

在互联网上搜索后,我仍然没有找到/意识到我的案例中错误的原因是什么,以及如何修复它。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2013-03-06 23:55:27

driver级别或在preparing语句时设置resultSetHoldability。这应该会修复你正在经历的事情。

票数 0
EN

Stack Overflow用户

发布于 2014-05-23 02:55:52

我收到相同错误的原因是因为我关闭了db2连接,然后尝试读取结果集。请强调一点,在读取结果集时,db2必须保持连接。

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

https://stackoverflow.com/questions/15239249

复制
相关文章

相似问题

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