你的数据库连接每次使用完毕用conn.close()方法关闭,连接数就不会满了。对于rs&stmt最好也用相同方法关闭。关于第二个问题,不同的数据库产品是会与区别的,具体就要靠自己去调试了。

解决方案 »

  1.   

    老大,你没关连接呀!<%@ page contentType="text/html;charset=gb2312" %>
    <%@ page import="java.sql.*" %>
    <%@ page import="javax.sql.*" %>
    <%@ page import="javax.naming.*" %>
    <%
    Context env = (Context) new InitialContext().lookup("java:comp/env");
    DataSource source = (DataSource) env.lookup("jdbc/test");
    Connection conn = source.getConnection();
    ResultSet rs = null;
    Statement stmt = null;

    stmt = conn.createStatement();
    String sql = "select * from user";
    rs = stmt.executeQuery(sql);
    while(rs.next())
    out.println(rs.getString("User") + "<br>");
             rs.close();//加上
    %>
      

  2.   

    写了这样的一个DbManager Class,用法是ResultSet rs = DbManager(SQL)
    Connection由DbConnectionManager.getConnection()提供,这个没有问题。
    DbManager Class部分代码如下:public class DbManager
    {
    public static ResultSet executeQuery(String sqlStatement) throws Exception
    {
             ResultSet resultSet = null;
                      Connection conn =null;
    try
    { conn = DbConnectionManager.getConnection(); Statement statement = conn.createStatement();
    resultSet = statement.executeQuery(sqlStatement);
    // statement.close();
    } catch(Exception e)
    {
    System.out.println("SQLHome.executeQuery: " + e.getMessage());
    // throw(e);
    } finally
    {
    if(conn!= null)
    {
    try
    {
    conn.close();
    }
    catch(Exception e)
    {
    System.out.println("SQLHome.executeQuery - release connection: " + e.getMessage());
    //throw(e);
    }
    }
    }
    return resultSet;
    }
    }为了回收连接池的连接,在代码后面加了finally的代码,将conn关闭,但是随着conn的关闭,resultSet的数据也随之丢失,但是如果要保证resultSet有数据,又不能在这里conn.close(),刷新几下就超过了连接池的最大连接数了。
    为了保证整个DbManager的可控性、完整性、独立性,希望把conn.close()也放在这个类里。
    各位有什么好的解决方法呢?conn.close()该写在哪里呢?
      

  3.   

    你例外写给方法conn.close();
    然后,每次while(rs.next()){
    out.println(rs.getString("User") + "<br>");
    ...
    ....
    }
    DbManager.conn.close()
    就ok了;
      

  4.   

    这样还是要专门去写一句conn.close()了
    这个方法是没有办法才使用的方法了,:(我想能否让它自己关闭呢?
      

  5.   

    resin说它不用用户显示关闭连接啊!
      

  6.   

    告诉你一个不幸的消息,resin的连接池会自已挂掉,我在w2k和redhat7.2上试都是这样,一个连接池,如果半天左右没有人访问就挂掉了。呜呜