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();
}}}}}}
10 个解决方案
#1
最好不要这么写!
如果要这么写的话,你把数据库连接也关了试试!
也就是说,每次查都要重新连接数据库,虽然这样慢一些,但应该不会出错!
如果要这么写的话,你把数据库连接也关了试试!
也就是说,每次查都要重新连接数据库,虽然这样慢一些,但应该不会出错!
#2
Connection最后关闭不行吗?
#3
TO: weipj001(快乐王子)
可以啊,但是你在多次循环过程中,可能RS资源没有很好的回收!你在循环中把数据库连接关掉试一下!我以前也出现过这种问题!
可以啊,但是你在多次循环过程中,可能RS资源没有很好的回收!你在循环中把数据库连接关掉试一下!我以前也出现过这种问题!
#4
我觉得你应该在所有的循环外面用finally来关闭
#5
你已经把pstat关闭了,第二次调用的时候自然报错。
#6
weipj001 (快乐王子)
怎样可以测出还有好多RS 没有关闭啊!!
我不懂能告诉我吗 》
怎样可以测出还有好多RS 没有关闭啊!!
我不懂能告诉我吗 》
#7
不在循环内关闭,在最外层循环结束后关闭ResultSet不行吗!!!
#8
rs5.close();
rs5=null;
if(pstat!=null)
pstat.close();
rs5=null;
if(pstat!=null)
pstat.close();
#9
if(rs5.next())
{
}
rs5.close();
你的这段代码有问题,不管rs5是否有内容,它一定会把rs5做一次close(),如果rs5在查询的时候就没有内容,那么你这个时候来做close()它就会抛出异常的,你在关闭之前应做一个判断,如果rs5不为空的时候就把它关闭,如果为空,可以不管。而且一般我们只要关闭数据库的Connection就可以了,至于PreparedStatement和ResutlSet这些可以不关。
{
}
rs5.close();
你的这段代码有问题,不管rs5是否有内容,它一定会把rs5做一次close(),如果rs5在查询的时候就没有内容,那么你这个时候来做close()它就会抛出异常的,你在关闭之前应做一个判断,如果rs5不为空的时候就把它关闭,如果为空,可以不管。而且一般我们只要关闭数据库的Connection就可以了,至于PreparedStatement和ResutlSet这些可以不关。
#10
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
我用的是oracle,所以用这条语句可以查到相关的连接。
select user_name, status, osuser, machine, a.sql_text
from v$session b,
v$open_cursor a
where a.sid = b.sid
#1
最好不要这么写!
如果要这么写的话,你把数据库连接也关了试试!
也就是说,每次查都要重新连接数据库,虽然这样慢一些,但应该不会出错!
如果要这么写的话,你把数据库连接也关了试试!
也就是说,每次查都要重新连接数据库,虽然这样慢一些,但应该不会出错!
#2
Connection最后关闭不行吗?
#3
TO: weipj001(快乐王子)
可以啊,但是你在多次循环过程中,可能RS资源没有很好的回收!你在循环中把数据库连接关掉试一下!我以前也出现过这种问题!
可以啊,但是你在多次循环过程中,可能RS资源没有很好的回收!你在循环中把数据库连接关掉试一下!我以前也出现过这种问题!
#4
我觉得你应该在所有的循环外面用finally来关闭
#5
你已经把pstat关闭了,第二次调用的时候自然报错。
#6
weipj001 (快乐王子)
怎样可以测出还有好多RS 没有关闭啊!!
我不懂能告诉我吗 》
怎样可以测出还有好多RS 没有关闭啊!!
我不懂能告诉我吗 》
#7
不在循环内关闭,在最外层循环结束后关闭ResultSet不行吗!!!
#8
rs5.close();
rs5=null;
if(pstat!=null)
pstat.close();
rs5=null;
if(pstat!=null)
pstat.close();
#9
if(rs5.next())
{
}
rs5.close();
你的这段代码有问题,不管rs5是否有内容,它一定会把rs5做一次close(),如果rs5在查询的时候就没有内容,那么你这个时候来做close()它就会抛出异常的,你在关闭之前应做一个判断,如果rs5不为空的时候就把它关闭,如果为空,可以不管。而且一般我们只要关闭数据库的Connection就可以了,至于PreparedStatement和ResutlSet这些可以不关。
{
}
rs5.close();
你的这段代码有问题,不管rs5是否有内容,它一定会把rs5做一次close(),如果rs5在查询的时候就没有内容,那么你这个时候来做close()它就会抛出异常的,你在关闭之前应做一个判断,如果rs5不为空的时候就把它关闭,如果为空,可以不管。而且一般我们只要关闭数据库的Connection就可以了,至于PreparedStatement和ResutlSet这些可以不关。
#10
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
我用的是oracle,所以用这条语句可以查到相关的连接。
select user_name, status, osuser, machine, a.sql_text
from v$session b,
v$open_cursor a
where a.sid = b.sid