我分不够了 麻烦大家先帮帮忙 救命要紧啊 哎 以前就不重视这个问题 现在终于 项目运行在线了出现巨大问题。。原因是数据库没关所导致我把JSP BEAN DB3个部分代码贴出来大家给看看getConnClose();方法应该放在哪里吧。。代码很简单的 不麻烦看一看吧DB类查询方法:public ResultSet Query(String sql){
try{
  stmt = conn.createStatement();
  rs=stmt.executeQuery(sql);
 
  return rs;
  
}catch(Exception ex){
System.out.println("DB1: "+ex.getMessage());
}

 return null;
}
BEAN类业务方法: public List getProducts(){

String sql="select * from PostsTable";
ResultSet rs=db.Query(sql);
List li = new ArrayList();
try {
while(rs.next()){
li.add(rs.getString("posts"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return li;

}JSP其实也不用写了吧要是需要在JSP就直接说好了 但是这个我认为不是在JSP里关 但是我放在
DB类的public ResultSet Query(String sql)方法里也不行因为放在RETURN NULL前 显然没什么意义 因为上面如果查到了结果的话那么根本就不会执行这里 可以我放在RETURN RS上面 项目运行起来又说连接已经关闭。
麻烦大家给看看啊 到底放在哪里关才合适啊 谢谢!!!!!!!很急
这个是关闭的方法。。
public void getConnClose(){
try {
rs.close();
} catch (SQLException e) {

e.printStackTrace();
}

try {
stmt.close();
} catch (SQLException e) {

e.printStackTrace();
}

try {
conn.close();
} catch (SQLException e) {

e.printStackTrace();
}
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【jy02411368】截止到2008-08-01 16:15:59的历史汇总数据(不包括此帖):
    发帖的总数量:44                       发帖的总分数:2271                     每贴平均分数:51                       
    回帖的总数量:129                      得分贴总数量:19                       回帖的得分率:14%                      
    结贴的总数量:44                       结贴的总分数:2271                     
    无满意结贴数:6                        无满意结贴分:410                      
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:13.64 %               无满意结分率:18.05 %                  
    敬礼!

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=jy02411368
      

  2.   

    return li;
    之前吧。。
    可以直接写个finally来进行关闭,等你都取出来之后,关了。
      

  3.   

    public ResultSet Query(String sql){ 
    try{ 
      stmt = conn.createStatement(); 
      rs=stmt.executeQuery(sql);   return rs; 
      
    }catch(Exception ex){ 
    System.out.println("DB1: "+ex.getMessage()); 
    } finally{
     if (stmt != null) {
          try {
            stmt .close();
          }
          catch (Exception e) {
            e.printStackTrace();
          }
        }
     if (conn!= null) {
          try {
            conn.close();
         }
          catch (Exception e) {
            e.printStackTrace();
          }
        }
    }return null; 

    BEAN类业务方法: public List getProducts(){ String sql="select * from PostsTable"; 
    ResultSet rs=db.Query(sql); 
    List li = new ArrayList(); 
    try { 
    while(rs.next()){ 
    li.add(rs.getString("posts")); 

    } catch (SQLException e) { 
    e.printStackTrace(); 

    return li; }  finally {
                try {
                   if (rs != null) {
                     rs.close();
                    } 
       } catch (Exception e) {  }
    }
      

  4.   

    一般都finally里释放,无论代码是否有问题,都会执行finally力的释放public ResultSet Query(String sql)建议不要直接返回RS,
      

  5.   

    我想问下3喽的 如果找到了RS直接就返回了 那么public ResultSet Query(String sql){ 
    try{ 
      stmt = conn.createStatement(); 
      rs=stmt.executeQuery(sql);   return rs; 
      
    }catch(Exception ex){ 
    System.out.println("DB1: "+ex.getMessage()); 
    } finally{ 
    if (stmt != null) { 
          try { 
            stmt .close(); 
          } 
          catch (Exception e) { 
            e.printStackTrace(); 
          } 
        } 
    if (conn!= null) { 
          try { 
            conn.close(); 
        } 
          catch (Exception e) { 
            e.printStackTrace(); 
          } 
        } 

    难道程序还会执行下去???
      

  6.   

    通常关闭连接的方法都写在数据访问类的finally中,
    但是你这里的数据访问类的方法返回的是ResultSet,所以不适合写在数据访问类中。
    建议你写在bean类的finally中。
      

  7.   

    登记吧result铲倒持久化对象或list后就可以关闭了啊 
    更改或插入完就可以关了啊