系统是JSP+JAVABEAN实现,我在class中定义了
public ResultSet executeQuery(String sql) {
try {
conn = ds.getConnection();
stmt =conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
}
catch (SQLException ex) {System.err.println("sql_data.executeUpdate:" + ex.getMessage());}
return rs;
}
然后在页面通过
ResultSet rs=sqlbean.executeQuery("select ......");
来读取数据库,通过配置TOMCAT的连接池来连接数据库,但由于CLASS中没有conn.close()和stmt.close(),所以当页面庞大时,就会出线连接池溢出的错误,我试过在class中加上以上两句关闭,又会出现连接已关闭的错误,到底这里应该怎样改呢,望各位给予帮助,谢谢
public ResultSet executeQuery(String sql) {
try {
conn = ds.getConnection();
stmt =conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
}
catch (SQLException ex) {System.err.println("sql_data.executeUpdate:" + ex.getMessage());}
return rs;
}
然后在页面通过
ResultSet rs=sqlbean.executeQuery("select ......");
来读取数据库,通过配置TOMCAT的连接池来连接数据库,但由于CLASS中没有conn.close()和stmt.close(),所以当页面庞大时,就会出线连接池溢出的错误,我试过在class中加上以上两句关闭,又会出现连接已关闭的错误,到底这里应该怎样改呢,望各位给予帮助,谢谢
rs.close();
stmt.close();
conn.close();
最好把函数改下,返回一个查询的结果List,增加一个finnaly块,按以上顺序关闭连接
不用用用ResultSet 返回数据,用rowSet ,HashMap 这些把结果返回就可以了
如:
public void closeConnAndStmt(){
try{
stmt.close();
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
然后在rs.close();之后马上调用此方法。
不过我还是建立你重构一下,这样的使用太丑陋了