to  singedcat(以梦为马) 以前我也是多次连接多次释放。现在改为一次连接,多次使用。最后释放,但出问题了。
这是提示信息 Connection reset by peer: socket write error

解决方案 »

  1.   

    Connection conn=null;
    Stamtent stmt=null;
    try{
    }catch(Exception e){
    ioe.printStackTrace();
    }
      

  2.   

    请以下格式使用数据库连接
    Connection conn=null;
    Stamtent stmt=null;
    ResultSet rs=null;
    try{
          conn=数据据对象.getConnection();
          stmt=conn.createStatement();
          连续使用查询N次
          ….其他代码
    }catch(Exception e){
       ioe.printStackTrace();
    }finally{
       try {
            if (rs != null) {
              rs.close();
            }
            if (stmt != null) {
              stmt.close();
            }
            if (conn != null) {
              conn.close();
            }
          } catch (SQLException SQLE) {
            SQLE.printStackTrace();
          }
    }
      

  3.   

    to  
     回复人: wufeng0916(aa) (  
    每使用一次提交一事务?必须?
      

  4.   

    to  
     回复人: wufeng0916(aa)     Test.jsp
       
        DBManager.getConnection()这个方法判断连接变量是否为空,如果为空,
        取得连接,采用数据库连接沲
         。。
         。。
         在这中间可能都用到这个数据库类里的几个方法,每个方法
         都是一些查询,然后把查询结果显示出来。
         这每个方法,都是首先调用getConnection()然后。。
         。。
         。。
        DBManager.freeConnection()这个方法释放连接,判断连接变量是否为空,不为空就释放。    不过,这里没有用事务,因为我只是用到查询,没有用到update之类的。不过,加上事务应该好些。
         可惜啊,一同时打开页面抛一些异常
      
      

  5.   

    如果你不想自己写连接池,可以用一些容器自带的连接池技术实现,比如tomcat
      

  6.   

    关于数据库的操作一定要少连接,一次连接要尽可能多坐事情。
    关于事务处理,是当一次连接数据库要出现多次modify操作的时候所必须的,如果仅仅是select则不需要事务。
      

  7.   

    我的办法比较笨 写在bean里面 每次查询只得到一个结果数组 连接和关闭连接全在类里了
      

  8.   

    回复人: gaochao79() 
           你也只是用到数据库就连接再关闭。太耗系统资源了
      

  9.   

    呵呵 是啊不过关系不大 大部分网页都发布成html的 
    不过以后还是会把bean改写一下
      

  10.   

    to  gaochao79() (:
                    以前我也是用你这种。封装在类中,没错。
                    后来我想在一个页面里开始取连接,然后结束的时候再关闭。但出错了。  因为在A电脑上打开 Test.jsp的时候,并且Test.jsp取得连接在没释放之前。
    这个时候在B电脑上再打开Test.jsp。因为连接还没释放,所以就执行到了Test.jsp
    中一段代码
                statement = getConnection().createStatement();
                ResultSet  resultset = statement.executeQuery(s);
                //B电脑上这个页面,因为A电脑页面上同一个连接没释放,所以没错。
               但可能这个时候,A电脑运行的这个页面已经运行到最后,把这个连接
              释放掉了
               接下来的ResultSet就出错了??????
                大家如何办啊?
      

  11.   

    rs啊,stmt啊每次用完后都关掉!只留con在最后关掉。估计不会socket error.
      

  12.   

    to  enjoy330(*寒林*) :
                         但是错就错在这个逻辑,我试了每次用完之后关闭rs
    但因为在并发的时候,可能把连接给释放掉了。会出错。
      因为在A电脑上打开 Test.jsp的时候,并且Test.jsp取得连接在没释放之前。
    这个时候在B电脑上再打开Test.jsp。因为连接还没释放,所以就执行到了Test.jsp
    中一段代码
                statement = getConnection().createStatement();
                ResultSet  resultset = statement.executeQuery(s);
                //B电脑上这个页面,因为A电脑页面上同一个连接没释放,所以没错。
               但可能这个时候,A电脑运行的这个页面已经运行到最后,把这个连接
              释放掉了
               接下来的ResultSet就出错了??????
                大家如何办啊?
      

  13.   

    建议不要把数据库联接的代码放在jsp文件里面!!
    放到bean里面不行吗???效率高多了!!
      

  14.   

    to : zhangqunjun() :
                         都是放在bean里面的啊,这样写,只是为了让大家看清楚