是这样的,代码太长,我这里只讲明。
我写了两个Bean  LinkDB 和 QueryDB,一个是连接数据库,一个是访问数据库。
然后先调用 LinkDB 连接数据库,返回参数 Statement stmt 传给 QueryDB,
再在QueryDB里面通过stmt访问数据库,
然后用LinkDB一次连接数据库,用executeQuery先后两次访问数据库,第二次的ResultSet覆盖第一次的ResultSet,就是说两次用同一个ResultSet对象(后来改为用不同两个,同样不行)。注意:我在LinkDB 里面写了两个方法
public void StmtClose() throws Exception{  // the method to close the Statement
stmt.close();  
}

public void ConnClose() throws Exception{  // the method to close the Connection
conn.close();
}但问题是我根本没有在JSP里面运用这两个方法,是否因为我在LinkDB里面写了这两个方法,系统在访问完数据库以后,就好像调用doGet(),doPost那样自动调用这两个方法关闭数据库连接呢?
这点最值得怀疑,请帮忙。

解决方案 »

  1.   

    你自己写的方法,如果没有调用系统怎么会自动去调用???
    你在java里面碰到的“好象”系统自动调用,其实都是设计者实实在在去调用了,但是封装起来让你没有看到而已,这就是所谓的framework,所以你说的这样的情况不可能出现,编译器没有那么智能
      

  2.   

    你把返回java.sql.Statement的那段檢查一下
    如果JSP里面沒有關﹐那么﹐就是在LINKDB里面關掉了如果對其它的有懷疑﹐就注掉先﹐然后檢查嘛
      

  3.   

    你是在集成开发环境中进行开发吗?可以用集成开发环境的Debug工具跟踪。另外你也可以查看jsp文件转换之后对应的java文件,看看里面有没有什么不正确的地方。
      

  4.   

    我也碰到过这样的问题, 从google上搜索到的结论是ms的jdbc driver会在被再次封装的情况下, 某名得close掉被pool的connection. 从你的exception上看, 是用了jasper封装了ms的jdbc driver, 如果没有记错得话, jasper有实现他connection pool.我的问题和你的一样, 同样的程序在Oracle上跑是OK的, 在MS sql server上跑, 如果不用ms的jdbc driver, 换第3方的driver, 甚至用jdbc-odbc bridge也ok.解决方法: asking ms for patch
      

  5.   

    http://expert.csdn.net/Expert/topic/2043/2043340.xml?temp=.5080683
    请参考