如果下面再不用了,在外面的while后关一次,置为null,在外边的finally里判断如果!=null,再关一次

解决方案 »

  1.   

    还有一个问题:打印出错信息是怎么打印比较好来的?
    try
    {,,,,,,,
    }
    catch(Exception e)
    {
          e.printStackTrace();     or
          e.getMessage()           or
           System.out.println(e.ToString());
    }
      

  2.   

    e.printStackTrace();  信息比较全,可以看到错误堆栈
      

  3.   

    关闭是rs 和 statement都要关闭么?具体怎么个关法,能不能直接写在 那个结构里啊?
      

  4.   

    rs = conn.createStatement().executeQuery(sql);
    while(rs.next())
    {
    String sqlStr = "select * from table1 where id = "+ rs.getString("id");
    rs1 = conn.createStatement().executeQuery(sqlStr);
    while(rs1.next())
    {
    String aa = rs1.getString("name");
    }
    rs1.close();//在这里关闭会报错:连接已经关闭。
    }
      

  5.   

    rs 和 statement最好是用完了直接关,但也可以不关,关conn时会把它们一起关了
    关的示例:
    Connection conn=null;
    try{
      conn=getconn();
    ....
      conn.close();
      conn=null;
    }catch(){}
    finally{
      if(conn!=null){
        try{
          conn.close();
          conn=null;
        }catch(...){
          conn=null;
        }
      }
    }
      

  6.   

    try{
    rs = conn.createStatement().executeQuery(sql);
    while(rs.next())
    {
          String sqlStr = "select * from table1 where id = "+ rs.getString("id");
          rs1 = conn.createStatement().executeQuery(sqlStr);
          while(rs1.next())
           {
             String aa = rs1.getString("name");        }    
    }
    }catch(Exception e){
      e.printStackTrace(); 
    }
    finally{
      //注意严谨的代码关闭顺序rs-->st-->conn
      if(rs!=null){
        rs.close();
      }
      if(conn!=null){
        conn.close();
      }
    }
      

  7.   

    如果RS不关的话,也会报错:说什么max cursor is expected 来的。
      

  8.   

    好的习惯是依次关闭,但如果conn关了的话,rs等都会关的
    不能上qq啊,哈哈