求高手意见!

thinkmore 2003-06-19 05:23:29
小弟现在在维护以前别人做的系统,遇到一个棘手的问题,举个例子来说吧:
在Bean中有个访问数据库的类DataManager,有个方法public ResultSet getResult( 参数),然后在jsp页面中:
DataManager dataMgr=new DataManager();
ResultSet rs=dataMgr.getResult();
while(rs.next())
{
out.println("------");//显示数据
}
现在问题是:Connection,Statement,ResultSet都没有关闭,没有释放资源,导致系统运行一段时间就会崩溃。
原因:
在bean中不能关闭ResultSet,一旦关闭,页面中就无法得到ResultSet;如果在页面关闭ResultSet,则Connetion,Statement无法在页面关闭;
请高手给点意见!多谢多谢
...全文
52 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
thinkmore 2003-06-19
  • 打赏
  • 举报
回复
to: xiaofenguser(风雨)
你的方法改动的小一点,如果没有别的好方法,只能照你说的办了,呵呵,多谢多谢!
thinkmore 2003-06-19
  • 打赏
  • 举报
回复
to:XKP(低等下人)
多谢你的意见,不过因为这个系统比较大,页面很多,如果按照你说的,那么要改的页面就太多了,工作量太大了^_^
xiaofenguser 2003-06-19
  • 打赏
  • 举报
回复
大量改动别人的代码不是很好,维护时应尽可能少的改动已经正常运行的代码
rex0y 2003-06-19
  • 打赏
  • 举报
回复
好的结构,页面中不要出现数据库操作

比如 user 表
在bean 中查询 数据库,每条记录构造一个user 对象,放在list , vector 之类的collection 中


public Vector getAllUsers(){
Vector vt = new Vector();
...
while(rs.next()) {
User user=new User();
user.setName(rs.getString("name"));
...
vt.add(user);
}
..
//关闭资源.
return vt;

}
xiaofenguser 2003-06-19
  • 打赏
  • 举报
回复
ResultSet 在页面中关闭,
Connection和Statement改成在DataManager中是全局的,在DataManager中加一个方法,关闭Connection和Statement,
页面中关闭ResultSet后再关闭DataManager中的
XKP 2003-06-19
  • 打赏
  • 举报
回复
你把那个
ResultSet
的内容
复制到别的地方
比如一个
ArrayList
或者一个
HashMap
然后关闭那个
ResultSet

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧