我用一个javaBean封装了数据库的连接,查询和更新操作,我的问题是:若我在该类型的对象user中执行查询并返回结果集rs,最后我是不是只要在这个对象中的关闭数据连接和数据集就可以了,外面返回的rs对象是不是不用关了,因为它只是对user对象中的结果集对象的一个引用,对吗?
  还有一个问题,关闭rs等对象时,下面两种方式,那一种更好?
  try{
    if(rs!=null) rs.close();
  }catch(Exception e){}  try{
    if(rs!=null) rs.close();
    rs = null;
  }catch(Exception e){}
  最后加上rs=null是提示垃圾回器进行垃圾回收吗?
  希望大家参与讨论,发言者有分!

解决方案 »

  1.   

    把不用的对象置为 null 。我认为是一个很好的习惯。然后,垃圾回收器在运行的时候,就肯定会回收。
      

  2.   

    我的意思就是像这种代码中的rs用不用关?
    db.Mycon user = new db.Mycon();
    ResultSet rs=null;
    try
    {
       rs=user.executeQuery(sql);
    }catch(Exception e)
    {
      e.printStackTrace();
    }finally
    {
       user.close();
    }
      

  3.   

    深层次的东西我不懂我是来学习的
    想看一下楼主的Mycon类,感觉和我用的方式不同,想要学习一下。
      

  4.   

    把不用的对象置为 null 。我认为是一个很好的习惯。对!!!
      

  5.   

    看你的写法,Mycon中的ResultSet应该不是static变量,这个rs应该不是对user对象中的结果集对象的一个引用,所以要关。
      

  6.   

    不好意思,搞错了。
    rs只要是对user对象中的结果集对象的一个引用,只要有一处关闭就可以了
      

  7.   

    是阿 。就像c中的 用 free一样 。好习惯阿
      

  8.   

    好的,感谢各位的发言,我更加确信我的想法了。
    只要javaBean里面的Connection,Statement和ResultSet对象关了就可以,还有将一个不用的对象置位null有利于垃圾回收,有利于减少内存的使用量。
      

  9.   

    习惯倒是很好,不过有一个问题:如果在方法中关闭了rs,则在jsp页面中返回结果集的时候将会抛出异常,提示“试图得到一个关闭的结果集”。
    所以最好不要在此关闭,应该在调用此方法的jsp页面中关闭为好。
      

  10.   

    顺便说一下,connection和statement一定要关闭。