返回结果集问题,菜鸟求解

as84633270 2012-09-18 11:17:48
调用一下函数,但是会显示结果集已关闭,去掉this.closeAll(conn, pstmt, null);后可以用,但是没关掉Connection和PreparedStatement,求大神一个好的方法处理结果集的返回。
public ResultSet SelectSQL(String sql)
{
conn=this.getConnection();
ResultSet rs=null;
PreparedStatement pstmt=null;
try {
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.closeAll(conn, pstmt, null);
}
return rs;
}
...全文
70 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
as84633270 2012-09-18
  • 打赏
  • 举报
回复
谢谢,我试试用这个方法,主要是希望调用这个方法的时候不用一直重写类似函数,我比较懒啦
MiceRice 2012-09-18
  • 打赏
  • 举报
回复
你都已经在finally中this.closeAll(conn, pstmt, null);
连接被关闭了,当然结果集也会被关闭掉。


一般建议的做法是,不要直接返回ResultSet,而是将其转换为 List 列表,这样就不用担心结果集被关闭了,而且也不会暴露了数据库对象;这是推荐的标准的做法。


如果你非要用ResultSet作为返回,可以用CachedRowSet,它会自动把查询结果集全部加载到内存中,就不怕连接被关闭了;具体可以Google下。

58,453

社区成员

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

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