这个是一个查询的方法,但是PreparedStatement和ResultSet没有释放,因为释放就无法返回结果集,这样写有问题吗?

这个是一个查询的方法,但是PreparedStatement和ResultSet没有释放,因为释放就无法返回结果集,这样写有问题吗?

public static ResultSet selectInfo(String sql, Connection cn) {

        PreparedStatement ps = null;

        ResultSet rs = null;

        try {

            ps = cn.prepareStatement(sql);

            rs=ps.executeQuery();

            return rs;

        } catch (Exception e) {

            e.printStackTrace();

        }

        return null;

    }


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2021-12-30 15:34:03

同学你好,可将释放资源的代码书写在finally代码块中,finally代码块中的代码是一定会被执行的。

无论执行try中代码时是否出现异常,在方法返回结果之前是一定会执行finally代码块的。

祝学习愉快~

  • 提问者 南京小花生 #1

    你看清楚了吗?我说如果释放,是无法返回结果集的

    2021-12-30 15:39:15
  • 好帮手慕小小 回复 提问者 南京小花生 #2

    同学你好,结果集关闭后不允许再操作。故资源释放后无法返回Resullt结果集。

    在方法体中需要对其进行关闭操作,若未进行关闭则会一直占着资源无法释放。代码修改建议如下:

    1、可以将方法的返回值修改为void,在方法中对获得的结果集进行打印输出操作。

    2、也可将方法的返回值修改为List集合,将结果集中的数据存储到集合中并返回。

    祝学习愉快~

    2021-12-30 16:49:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师