java - 结果集耗尽的异常一次又一次发生

标签 java sql resultset

结果集耗尽异常一次又一次发生,我已经检查了所有可能性。我的表包含类似的数据,但它正在发生..我将我的代码粘贴在这里..请指导我

  ArrayList<Duty> myList = new ArrayList<Duty>();
    try {

        String query = "select * from CBMS.DUTIES";
        ResultSet r = con.statement.executeQuery(query);

        while (r.next()) {
            Centre c = null;
            Teacher t = null;
            query = "select * from CBMS.center";
            ResultSet r1 = con.statement.executeQuery(query);

            while (r1.next()) {

                if (r.getInt(2) == r1.getInt(1)) {
                    c = new Centre(r1.getString(3), r1.getInt(1), r1.getString(2));
                    break;
                }
            }

            query = "select * from CBMS.teacher";
            ResultSet r7 = con.statement.executeQuery(query);
            while (r7.next()) {
                System.out.println(r7.getString(1));
                if (r.getInt(3) == r7.getInt(2)) {
                    t = new Teacher(r7.getString(1), r7.getInt(2), r7.getString(3), r7.getString(4), r7.getString(5));

                    break;
                }
            }


            Duty d = new Duty(c, t, r.getString(4), r.getInt(1));
            myList.add(d);
        }

    } catch (Exception e) {

        System.out.println(e.getMessage());
    }
    return myList;

最佳答案

使用常规结果集时,不可能像在代码中那样来回操作。因此,当您运行 r.next() 时,您无法转到前一个值(并且您会执行多次)。请参阅this 。您应该重构代码并将值放入可以重用的变量中。

关于java - 结果集耗尽的异常一次又一次发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20296452/

相关文章:

sql - 将 Nvarchar(MAX) 转换为 DATETIME 数据类型 SQL Server 查询

java - 使用 Spring 数据创建 Cassandra 集群连接的最佳方法

SQL - 通过两个新列返回列中值的所有可能组合

MySQL 如何在全名字段上按姓氏排序?

java - 如何在 TestNG 中使用 Mockito 模拟 jdbc 连接和 resultSet

java - JTable 未使用 DButils 从结果集中填充

java - DropWizard 0.7.1 记录文件追加器问题

java - MyBatis 抛出异常 "stream closed"

java - Excel 中的空单元格返回 Null(Java、POI)

java - 需要 Java 中 ResultSet 的帮助