各位好,请看这段代码java.sql.ResultSet rs = null;
java.sql.Statement stmt = null;
Reader reader = null;
stmt = con.createStatement();
rs = stmt.executeQuery(sSql);
if(rs.next()){
    reader = (java.io.Reader) rs.getCharacterStream(1);
}
rs.close();
stmt.close();猜测:
在此处我关闭了rs之后,为什么本来获取到的流对象reader好像也被关闭了还是怎么了,
后来经过试验证明,在关闭rs之后的确会关闭流...
因为知道关闭了stmt之后会自动关闭rs,也会关闭流希望有人能够给与确切的指点,我的猜测是否是正确的
还有在关闭了rs或者stmt之后还有什么是会被关闭的呢?

解决方案 »

  1.   

    reader = (java.io.Reader) rs.getCharacterStream(1);
    应该是对接上了一个管道。当你把rs管道封的时候。reader管道就断了。
      

  2.   

    只有确定输出流读取结束,才能关闭rs。所以在关闭rs之前,要读取reader的内容,否则获取一个reader有什么用呢。
      

  3.   

    就是说实际上可以理解为reader只是一个管道...并不是把信息获取到reader对象里面来咯?
      

  4.   

    管道是建立了,但是你没有读东西出来
    你把管道另一端ResultSet关了,管道也就不通了