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 (自调优)’]
我的怀疑很简单,但我很困惑:
从上面的代码中,我使用本地连接对象还是全局连接对象?请建议一下。
发布于 2014-10-28 14:08:26
您没有使用Connection You open。这,
cpiDAOBase.openDbConnection();
ps = new cpiDAOBase().con.prepareStatement(INSERT_CARRIER);应该是
cpiDAOBase.openDbConnection();
ps = cpiDAOBase.con.prepareStatement(INSERT_CARRIER);因为您用new cpiDAOBase()创建的实例没有openDbConnection。
https://stackoverflow.com/questions/26610300
复制相似问题