在JDBC中先获取多个结果集再打印会报错database is locked但是获取一个打印一个就不会

淡竚`孤志 2023-05-20 10:26:48
            //获取结果集1
            ResultSet result1 = stmt.executeQuery(sql1);

            //获取结果集2
            ResultSet result2 = stmt.executeQuery(sql2);

            //将结果集1转换成文本
            while (result1.next()) {
                String s_id = result1.getString("s_id");
                String initials = result1.getString("initials");
                System.out.println(s_id + initials);
            }
            //将结果集2转换成文本
            while (result2.next()) {
                String p_id = result2.getString("p_id");
                String p_title = result2.getString("p_title");
                System.out.println(p_id + p_title);
            }

 如题,上述代码会报错database is locked

Exception in thread "main" java.sql.SQLException: database is locked

但是如果先获取并处理结果集1,再获取并处理结果集2就能正常运行

            //获取结果集1
            ResultSet result1 = stmt.executeQuery(sql1);

            //将结果集1转换成文本
            while (result1.next()) {
                String s_id = result1.getString("s_id");
                String initials = result1.getString("initials");
                System.out.println(s_id + initials);
            }

            //获取结果集2
            ResultSet result2 = stmt.executeQuery(sql2);

            //将结果集2转换成文本
            while (result2.next()) {
                String p_id = result2.getString("p_id");
                String p_title = result2.getString("p_title");
                System.out.println(p_id + p_title);
            }

是为什么?

...全文
39 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Meteors. 07-19
  • 打赏
  • 举报
回复

在 JDBC 中,每个 Statement 对象只可以同时执行一个查询,因此在执行第二个查询之前,要先关闭第一个结果集。

7

社区成员

发帖
与我相关
我的任务
社区描述
Galaxybase原生分布式高性能图数据库相关技术讨论区
数据库知识图谱 技术论坛(原bbs)
社区管理员
  • 创邻科技
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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