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。
如果结果集太大,不方便取出传参数,则应该在调用了其它方法利用完resultset之后再关闭statement。
#2
它本身应该是没有close方法的把,只有一个clearParameters() 。
#3
就像 水管嵌套了很多层,但是,只要把最后调他的地方关闭,水就不会流出来,是一样的。
#4
从外层往内层关~ jdbc要注意这一点
#5
楼上说的对。你关闭的时候除了捕捉异常。还要注意关闭的顺序。先re 再st最后conn
#1
statement关闭了之后,resultset当然不可以使用了。如果希望将结果数据传入其它方法中使用,可以将数据先取出放在一个List或者数组中传入其它方法中使用。
如果结果集太大,不方便取出传参数,则应该在调用了其它方法利用完resultset之后再关闭statement。
如果结果集太大,不方便取出传参数,则应该在调用了其它方法利用完resultset之后再关闭statement。
#2
它本身应该是没有close方法的把,只有一个clearParameters() 。
#3
就像 水管嵌套了很多层,但是,只要把最后调他的地方关闭,水就不会流出来,是一样的。
#4
从外层往内层关~ jdbc要注意这一点
#5
楼上说的对。你关闭的时候除了捕捉异常。还要注意关闭的顺序。先re 再st最后conn