各位高手,我在连接oracle的时候常常这样写
DBConnection db = new DBConnection();
str_sql="select * from ....";
ResultSet rs = db.execQuery(str_sql);
...
rs.close();
...
str_sql="select ....";
rs=db.execQuery(str_sql);
...
rs.close();
....
str_sql="update....";
db.execUpdate(str_sql);
...
db.close();
如此这般写法,结果在oracle中出现n多个连接同时连接数据库,导致系统越来越慢,不知我的写法错了么?还是有其他办法解决这个矛盾!
是不是每次都要建立一个数据库连接,接着马上就关掉呢?
还有,我有时在处理一个业务逻辑的时候,半途要连接一个新的页面做些查询的动作,也要打开数据库连接,这个时候,如果主窗口的数据库连接没有关掉,是否也就产生了多个连接呢?求各位大虾给我个比较易懂的解决方案!多谢了

解决方案 »

  1.   

    你可以在DBConnection类里加一个静态字段用来表示当前的连接数,跟踪一下,看看到底是哪里的连接没有释放掉
      

  2.   

    连接oracle的连接池如何写?刚开始写jsp,不太熟悉,能否请大家说明白点?惭愧
      

  3.   

    既然是jsp,那么用容器提供的连接池就可以了。
    例如tomcat提供的。
      

  4.   

    最佳解决方案数据库连接池,具体网上很多,有APACHE和高手自己写的。
      

  5.   

    将代码修改为
    DBConnection db = null
    try{
    db = new DBConnection();
    str_sql="select * from ....";
    ResultSet rs = db.execQuery(str_sql);
    ...
    rs.close();
    ...
    str_sql="select ....";
    rs=db.execQuery(str_sql);
    ...
    rs.close();
    ....
    str_sql="update....";
    db.execUpdate(str_sql);
    ...
    }finally{
    if ( db != null){
    try{db.close();
    }catch ( SQLException e){
    }
    }----------
    原因是可能sql执行失败,连接没有释放的原因。
      

  6.   

    用jsp的话肯定要用到web容器了,你可以在web容器中配置你的连接池,每次从连接池取得连接用完后记得把connection close掉
      

  7.   

    那要看你用的什么服务器了,Weblogic的好配,tomcat需要写你的项目配置文件