PreparedStatement 关闭后,所有ResultSet全部失效

时间:2021-05-07 11:51:40
各位大神,我写了个程序是这
Class sqlo{
public String sql_query(String sql_query,String  iparams) throws SQLException{
 Connection conn;
PreparedStatement pstmt;
 ResultSet  rs; 
JdbcDao j = new JdbcDao();
conn = j.getConnection();
.....
              
当执行完查询后
使用  使用pstmt.close();

return result;
}
我有两个函数 
public void foo1(){
sqlo s = new  sqlo();
System.out.println(s.sql_query("select  * from xxx where id =1","");
}
public void foo2(){
sqlo s = new  sqlo();
System.out.println(s.sql_query("select  * from xxx where id =2","");
}
当使用pstmt.close()后,两个都没有返回结果
当没有使用pstmt.close();两个函数 又可以正常使用,请问如何解决?

5 个解决方案

#1


statement关闭了之后,resultset当然不可以使用了。如果希望将结果数据传入其它方法中使用,可以将数据先取出放在一个List或者数组中传入其它方法中使用。

如果结果集太大,不方便取出传参数,则应该在调用了其它方法利用完resultset之后再关闭statement。

#2


它本身应该是没有close方法的把,只有一个clearParameters() 。

#3


就像  水管嵌套了很多层,但是,只要把最后调他的地方关闭,水就不会流出来,是一样的。

#4


本帖最后由 wlwlwlwl015 于 2016-09-19 10:04:01 编辑
先关resultset  再关preparedstatement/statement 最后关connection~
从外层往内层关~  jdbc要注意这一点

#5


楼上说的对。你关闭的时候除了捕捉异常。还要注意关闭的顺序。先re 再st最后conn

#1


statement关闭了之后,resultset当然不可以使用了。如果希望将结果数据传入其它方法中使用,可以将数据先取出放在一个List或者数组中传入其它方法中使用。

如果结果集太大,不方便取出传参数,则应该在调用了其它方法利用完resultset之后再关闭statement。

#2


它本身应该是没有close方法的把,只有一个clearParameters() 。

#3


就像  水管嵌套了很多层,但是,只要把最后调他的地方关闭,水就不会流出来,是一样的。

#4


本帖最后由 wlwlwlwl015 于 2016-09-19 10:04:01 编辑
先关resultset  再关preparedstatement/statement 最后关connection~
从外层往内层关~  jdbc要注意这一点

#5


楼上说的对。你关闭的时候除了捕捉异常。还要注意关闭的顺序。先re 再st最后conn