作者:fbysss Blog:blog.csdn.net/fbysss 声明:本文章由fbysss原创,转载或引用请注明引用地址。 问题:在DBmanager.java中写了一个getResultSet方法,为的就是不用每次在页面中去释放连接。然而,在不同的操作系统环境下,不一定好使,比如在windows下,ResultSet是可以脱离connection继续使用的,但linux下就不行。如果要修改为Collection所有的页面都要进行修改,其改动量可想而知,这是我及其不愿意看到的。 怎么办? 幸好,我查到了CachedRowSet。是它救了我。 最棒的是,CachedRowSet继承自ResultSet,我只需要修改核心方法,页面一点不用改动! 代码:    /**      * 获取      * @return ResultSet      */     //public ResultSet getResultSet(String _sSQL) throws Exception {     public ResultSet getResultSet(String _sSQL) throws Exception {         System.out.println("-------返回数据集-------rowset1.0");         Connection vConn = getConnection();         try {             /*PreparedStatement pstmt = vConn.prepareStatement(_sSQL,             ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);             ResultSet rs = pstmt.executeQuery();*/             CachedRowSet crs = new CachedRowSetImpl();             crs.setUrl(sUrl);             crs.setUsername(sUserName);             crs.setPassword(sPassword);             crs.setCommand(_sSQL);             crs.execute(vConn);             return crs; /*                         crs.release();             crs.populate(rs);             return crs;  }*/         } catch (Exception ex) {             throw new Exception("获取CachedRowSet时出错。:" + ex.toString() +                                 "\n sql:" +                                 _sSQL);         } finally {             freeConnection(vConn);         }     }  
 
  |