作者: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);
}
}
本文地址:http://com.8s8s.com/it/it10598.htm