当前位置: 技术问答>java相关
高分求助,出现SQL的错误,是怎么回事?
来源: 互联网 发布时间:2015-10-05
本文导语: 我写了一些JDBC访问数据库方面的代码,使用的WEB SERVER是resin2.1,我使用JNDI的方式和数据库连接,因此在resin.conf文件里对env/comp进行了配置,我觉得这个配置类似于一个连接池。 由于访问数据库非常频繁,我在所有...
我写了一些JDBC访问数据库方面的代码,使用的WEB SERVER是resin2.1,我使用JNDI的方式和数据库连接,因此在resin.conf文件里对env/comp进行了配置,我觉得这个配置类似于一个连接池。
由于访问数据库非常频繁,我在所有的得到ResultSet的结果的方法里都对结果集进行了关闭,并且让ResultSet = null;
也就是类似下面的语句:
public void deleteResult(int intId) throws Exception {
TradeDAO tDAO = new TradeDAO("jdbc/etrade");
tDAO.deleteResult(intContractBuyId);
tDAO.closeConn();
tDAO = null;
}
public class TradeDAO {
public void closeConn() {
try {
if(rs != null)
rs.close();
if(stmt != null)
stmt.close();
}catch(Exception e) {
e.printStackTrace();
}
}
... ... ...
}
但是经常在访问数据库7、8次后,会出现下面的错误:
java.sql.SQLException: can't create connection from closed pool
at com.caucho.sql.DBPool.createConnection(DBPool.java:1280)
at com.caucho.sql.DBPool.getPooledConnection(DBPool.java:1221)
at com.caucho.sql.DBPool.getConnection(DBPool.java:1103)
at com.caucho.sql.DBPool.getConnection(DBPool.java:1080)
... ... ...
在页面反映就是连接不上数据库,要等待很长的时间,会显示一些错误。
这是什么原因呢?是不是我关闭一次访问数据库的方式不太好?或者是resin本身对连接池的管理不是很好?
由于访问数据库非常频繁,我在所有的得到ResultSet的结果的方法里都对结果集进行了关闭,并且让ResultSet = null;
也就是类似下面的语句:
public void deleteResult(int intId) throws Exception {
TradeDAO tDAO = new TradeDAO("jdbc/etrade");
tDAO.deleteResult(intContractBuyId);
tDAO.closeConn();
tDAO = null;
}
public class TradeDAO {
public void closeConn() {
try {
if(rs != null)
rs.close();
if(stmt != null)
stmt.close();
}catch(Exception e) {
e.printStackTrace();
}
}
... ... ...
}
但是经常在访问数据库7、8次后,会出现下面的错误:
java.sql.SQLException: can't create connection from closed pool
at com.caucho.sql.DBPool.createConnection(DBPool.java:1280)
at com.caucho.sql.DBPool.getPooledConnection(DBPool.java:1221)
at com.caucho.sql.DBPool.getConnection(DBPool.java:1103)
at com.caucho.sql.DBPool.getConnection(DBPool.java:1080)
... ... ...
在页面反映就是连接不上数据库,要等待很长的时间,会显示一些错误。
这是什么原因呢?是不是我关闭一次访问数据库的方式不太好?或者是resin本身对连接池的管理不是很好?
|
public void deleteResult(int intId) throws Exception {
TradeDAO tDAO = new TradeDAO("jdbc/etrade");
tDAO.deleteResult(intContractBuyId);
tDAO.closeConn();
tDAO = null;
}
这段看着这么别扭
TradeDAO tDAO = new TradeDAO("jdbc/etrade");
tDAO.deleteResult(intContractBuyId);
tDAO.closeConn();
tDAO = null;
}
这段看着这么别扭
|
can't create connection from closed pool
就是说你在这个页面进行连接之前已经关闭了pool,所以检查在连接之前是不是在什么地方执行了close;
就是说你在这个页面进行连接之前已经关闭了pool,所以检查在连接之前是不是在什么地方执行了close;