我每个页面结束都用了conn.close();

解决方案 »

  1.   

    不是每个页面用conn.close();
    应该在没次用try{}住conn.open().然后在finally{}里面用conn.close()
    这样应该就可以每次打开连接,每次都关闭
      

  2.   

    是不是try{
          运行主程序
           }catche(Exception){       }finally{
           conn.close();
           }
      

  3.   

    回复人: xxj123x(小白) ( ) 信誉:100  2004-11-18 10:38:00  得分: 0  
     
     
       不是每个页面用conn.close();
    应该在没次用try{}住conn.open().然后在finally{}里面用conn.close()
    这样应该就可以每次打开连接,每次都关闭
      
     应该在没次用try{}住rs.open().然后在finally{}里面用statement.close();conn.close()
    如果对数据库的读写很频繁,那肯定要用连接池了
      

  4.   

    我是这样写的,请大家多指教,现在客户就提出这个问题,连接过多,出现错误提示,但是我又不能改用连接池,主要是要改的文件太多了
    <%!
    public String name(String iddd)
    {
    java.sql.Connection conn_yh;
    java.sql.ResultSet rs_yh;
    String name=null;
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn_yh=DriverManager.getConnection("jdbc:odbc:china");Statement stmt_yh=conn_yh.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
    //String sql_yh="select * from login where id="+fh+"";
    String sql_yh="select * from login where id="+iddd+"";
    rs_yh=stmt_yh.executeQuery(sql_yh);
    rs_yh.last();
    int row_yh=rs_yh.getRow();
    if(row_yh>0)
    {
      rs_yh.first();
      name=rs_yh.getString("name");
    }
    rs_yh.close();
    conn_yh.close();
    stmt_yh.close();
    }catch(Exception e){
    //name="shi bai";
    }
    return name;
    }%>
      

  5.   

    rs_yh.close();
    stmt_yh.close();
    conn_yh.close();
    最好顺序关闭
      

  6.   

    数据连接量过多就只能有一种可能,就是你的数据库连接没有关闭。
    在每一个用到数据库连接的程序加上。
    finally{
       Connection.close();
    }
      

  7.   

    要是我的连接程序在try{}以外呢,是否也要加finally呢
      

  8.   

    我直接在try{
    连数据库
    conn.close();}难道也不行吗, 我都是这样写的
      

  9.   

    你肯定要都在finally里面关吧
    要不然如果出了错,那就关不了了!
      

  10.   

    各位老大,问题是,我的程序都是没有出错的呀,只是提示much connection
      

  11.   

    是因为你在每次使用后没有即使关闭记录集和连接造成的!使用完毕一定要关闭!rs.close();stmt.close();con.close();
      

  12.   

    这个是我的程序    
    <%
    try{//取当前系统时间
    Calendar sttime=Calendar.getInstance();
    int year=0;
    int month=0;
    int day=0;
    year=sttime.get(Calendar.YEAR);
    month=sttime.get(Calendar.MONTH)+1;
    day=sttime.get(Calendar.DAY_OF_MONTH);
    String str_year,str_month,str_day,str_time;
    str_year=Integer.toString(year);
    str_month=Integer.toString(month);
    str_day=Integer.toString(day);
    str_time=str_year+"-"+str_month+"-"+str_day;
    int row=0;
    java.sql.Connection conn;
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn=DriverManager.getConnection("jdbc:odbc:archive");Statement stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
    String sql="select * from d_baseinfo where workdate<='1900-1-1' or workdate>'"+str_time+"' or dutydate<='1900-1-1' or dutydate>'"+str_time+"' or  offworkdate<='1900-1-1' or offworkdate>'"+str_time+"' or Armydate<='1900-1-1' or Armydate>'"+str_time+"'   and totalunitname='"+dw_zong_edit+"'";//String sql="select name,personid from d_baseinfo  group by name,personid  having count(unitname)>1";
    //String sql="select * from d_baseinfo ";
    //String sql="select yd_name from yd_lb  group by yd_name having count(*)>1";
    //out.println(sql);ResultSet rs=stmt.executeQuery(sql);rs.last();
    row=rs.getRow();
    rs.first();
    //out.println(row_rc)
    //out.println(row);
    if (row>0)
    {
    while(!rs.isAfterLast())
    {
    String dw=rs.getString("totalunitname");
    String dw_xia=rs.getString("unitname");
    String name=rs.getString("name");
    String personid=rs.getString("personid");
    String wkdate=rs.getString("workdate");
    String ddate=rs.getString("dutydate");
    String offdate=rs.getString("offworkdate");
    String adate=rs.getString("Armydate");
    %>    <tr>
          <td width="188"><p align="center"><font  size="2"><%=dw%> <input type=hidden name=dw value="<%=dw%>"></td>
          <td width="119"><p align="center"><font  size="2"><%=dw_xia%><input type=hidden name=dw_xia value="<%=dw_xia%>"> </td>
          <td width="96"><p align="center"><font  size="2"><%=name%><input type=hidden name=name value="<%=name%>"></td>
          <td width="165"><p align="center"><font  size="2"><%=personid%> </font><input type=hidden name=personid value="<%=personid%>"></td>
          <td width="114"><p align="center"><font  size="2"><%=wkdate%><input type=hidden name=workdate value="<%=wkdate%>"></td>
          <td width="120"><p align="center"><font  size="2"><%=ddate%> <input type=hidden name=dutydate value="<%=ddate%>"></td>
          <td width="106"><p align="center"><font  size="2"><%=offdate%><input type=hidden name=offworkdate value="<%=offdate%>"></td>
          <td width="108"><p align="center"><font  size="2"><%=adate%> <input type=hidden name=armydate value="<%=adate%>"></td>
        </tr>
    <%rs.next();
    }
    }}catch(Exception e){
     out.println("数据库连接失败!");
     out.println(e.toString());
    }finally{
     //rs.close();
     stmt.close();
     conn.close();}
      

  13.   

    这个是我的报错信息,怎么会提示,无效的stmt和conn呢
    D:\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\police\yd\sh_005ftime_jsp.java:433: cannot resolve symbol
    symbol  : variable stmt 
    location: class org.apache.jsp.police.yd.sh_005ftime_jsp
     stmt.close();
     ^An error occurred at line: 117 in the jsp file: /police/yd/sh_time.jspGenerated servlet error:
    D:\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\police\yd\sh_005ftime_jsp.java:434: cannot resolve symbol
    symbol  : variable conn 
    location: class org.apache.jsp.police.yd.sh_005ftime_jsp
     conn.close();
     ^
    2 errors
      

  14.   

    你没发现你把Connection和Statement 的定义写在try里面了吗
      

  15.   

    不敢恭维你的代码,把ResultSet rs,java.sql.Connection conn,Statement stmt都写在try的外面ResultSet rs = null;
    Statement stmt = null;
    ResultSet rs = null;
    finally{
     if(rs!=null){
     try{
       rs.close();
     catch(SQLException e){
    }
     ........}