现在状况如下:
两个Bean a.java b.java1.a.java
//...
ReslutSet rs=null;
public ResultSet executeQuery(String sql){
//....取得ReslutSet的方法
this.rs=stmt.executeQuery(sql);;//获了一次记录集
return this.rs;
}
public void rs_close(){this.rs.close();}
2.b.java
//...
a a=new a();
Reslultset rs2;
rs2=a.executeQuery("select * ...");//------------------x
a.rs_close();// 这句是我想问的问题---------------------y如果我执行了y句以后,再到rs2里面取值时,发现里面空空如也,x句到底做了些什么呢,他没有把记录集真正的传给rs2吗,我关闭对象a里面的rs 还会影响外面的rs2,这是怎么回事啊如果不执行y句,可以从rs2中取到值

解决方案 »

  1.   

    rs2 和 rs 都是同一个结果对象的 引用对rs2或者rs 进行关闭 实际上是关闭同一个对象这种情况 最好把rs里面值放到容器里面 来传递
      

  2.   

    同意楼上~~~ 你可以再建立一个javaBean来关闭result~~
    等到所有数据都处理完毕了,再执行这个javaBean
      

  3.   

    建议lz好好看一下《编程思想〉的第二张
     rs 把它引用的对象传递给了rs2,两个同时引用的是同一个对象,要是关闭一个,另一个也关闭了。
      

  4.   

    to:interpb
    把rs里面值放到容器里面 来传递?怎么做呢,我目的也是:操作b.java得到记录后,自动关闭以前用过的,且无用了的结果对象,不需要再在b.java外面再来操作,这样使用的时候更方便,向b.java传送一个查询语句后,直接返回一个记录集,然后就可以以把b 扔了,不用管了
      

  5.   

    楼主可以试试把rs放在list中存储传递