数据查询后记录集关闭的小问题。

weipj007 2004-09-22 03:45:16
我在一个循环里进行数据库的查询。每次查询之后都把PreparedStatement,ResultSet关闭了。如果循环次数少的话。程序可运行。查出所有的ResultSet都已关闭。但是循环次数多的话。就会报错。可以查出有好多的ResultSet没有关掉。这是怎么回事?
for(int j=0;j<kk;j++){
for(int a=0;a<disbegintime.size();a++){
for(int k=0;k<totalmonth;k++){

if(signtype.equals("0")){
for(int u=0;u<minlist.size();u++){
if(!isexit){

rs5 = dbmanagement.ExecSqlQuery(conn, pstat, selectsql, paratype,paravalue);

if(rs5.next()){
}
rs5.close();
if(pstat!=null)
pstat.close();
}}}}}}
...全文
154 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
drugon 2004-09-23
  • 打赏
  • 举报
回复
if(rs5.next())
{
}
rs5.close();
你的这段代码有问题,不管rs5是否有内容,它一定会把rs5做一次close(),如果rs5在查询的时候就没有内容,那么你这个时候来做close()它就会抛出异常的,你在关闭之前应做一个判断,如果rs5不为空的时候就把它关闭,如果为空,可以不管。而且一般我们只要关闭数据库的Connection就可以了,至于PreparedStatement和ResutlSet这些可以不关。
remanwang 2004-09-23
  • 打赏
  • 举报
回复
rs5.close();
rs5=null;
if(pstat!=null)
pstat.close();
joincsdn 2004-09-23
  • 打赏
  • 举报
回复
不在循环内关闭,在最外层循环结束后关闭ResultSet不行吗!!!
haoshibai 2004-09-23
  • 打赏
  • 举报
回复
weipj001 (快乐王子)

怎样可以测出还有好多RS 没有关闭啊!!

我不懂能告诉我吗 》
lydong 2004-09-23
  • 打赏
  • 举报
回复
你已经把pstat关闭了,第二次调用的时候自然报错。
liujs1026 2004-09-23
  • 打赏
  • 举报
回复
我觉得你应该在所有的循环外面用finally来关闭
CNetol 2004-09-23
  • 打赏
  • 举报
回复
TO: weipj001(快乐王子)

可以啊,但是你在多次循环过程中,可能RS资源没有很好的回收!你在循环中把数据库连接关掉试一下!我以前也出现过这种问题!
weipj007 2004-09-23
  • 打赏
  • 举报
回复
to haoshibai
我用的是oracle,所以用这条语句可以查到相关的连接。
select user_name, status, osuser, machine, a.sql_text
from v$session b,
v$open_cursor a
where a.sid = b.sid
weipj007 2004-09-22
  • 打赏
  • 举报
回复
Connection最后关闭不行吗?
CNetol 2004-09-22
  • 打赏
  • 举报
回复
最好不要这么写!

如果要这么写的话,你把数据库连接也关了试试!
也就是说,每次查都要重新连接数据库,虽然这样慢一些,但应该不会出错!

81,092

社区成员

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

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