首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.sql.SQLException:语句已经关闭

java.sql.SQLException:语句已经关闭
EN

Stack Overflow用户
提问于 2014-10-28 14:01:51
回答 1查看 3K关注 0票数 0
代码语言:javascript
复制
public class CpiDaoBase {

protected Connection con = null;

public void test(){
cpiDAOBase.openDbConnection();
ps = new cpiDAOBase().con.prepareStatement(INSERT_CARRIER);
ps.executeQuery();
... blah blah blah
 }

 public void openDbConnection() throws CpiSystemException
    {
        try {
            if (con == null || con.isClosed()) {
                con = CpiDataSource.getNonTxConnection();
            }
        } catch (SQLException e) {
            log.error(e.getMessage(), e);
            new CpiSystemException("SQLException caused by con.isClosed(): " + e.getMessage());
        }
    }   
}

public class CpiDataSource {
    public static Connection getNonTxConnection() throws CpiSystemException {
    try {
        if (nonTxDs == null) 
        {
            if(log.isDebugEnabled()){
                log.debug("nonTxDs is null");
            }
            init();
        }
        return nonTxDs.getConnection();
    } catch (NamingException e) 
    {
        log.error("cpiPoolDataSource is not available !" + e);
        throw new CpiSystemException("cpiPoolDataSource is not available !");
    } catch (SQLException e) 
    {
        log.error("Failed to get connection from datasource !" + e);
        throw new CpiSystemException("Failed to get connection from datasource !");
    } catch (Exception e) 
    {
        log.error("Exception \n" + e);
        throw new CpiSystemException(e.getMessage());
    }
}
}

,我得到了下面的例外:

语句已关闭][活动] com.uprr.app.cpi.web.action.PatternSelectionAction:112:'8‘用于队列:'weblogic.kernel.Default (自调优)’错误SQL异常: java.sql.SQLException: executeQuery,Exception = nullACTIVE ExecuteThread:'5‘用于队列:'weblogic.kernel.Default (自调优)’] 2014-10-28 05:54:17,918 ExecuteThread [ACTIVE ExecuteThread:'5‘for queue:'weblogic.kernel.Default (自调优)’]

我的怀疑很简单,但我很困惑:

从上面的代码中,我使用本地连接对象还是全局连接对象?请建议一下。

EN

回答 1

Stack Overflow用户

发布于 2014-10-28 14:08:26

您没有使用Connection You open。这,

代码语言:javascript
复制
cpiDAOBase.openDbConnection();
ps = new cpiDAOBase().con.prepareStatement(INSERT_CARRIER);

应该是

代码语言:javascript
复制
cpiDAOBase.openDbConnection();
ps = cpiDAOBase.con.prepareStatement(INSERT_CARRIER);

因为您用new cpiDAOBase()创建的实例没有openDbConnection

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

https://stackoverflow.com/questions/26610300

复制
相关文章

相似问题

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