【问题标题】:multiple query with jdbc使用 jdbc 进行多次查询
【发布时间】:2013-09-09 05:39:06
【问题描述】:

我想使用来自同一个数据库的两个查询,但出现错误:

java.sql.SQLException: 结果集结束后

如何避免这个问题?请注意,每个表都没有相同的行号。

代码:

try {
    Dbconnection NewConnect = new Dbconnection();
    Dbconnection NewConnect2 = new Dbconnection();
    Connection con = NewConnect.MakeConnect();
    Connection con2 = NewConnect2.MakeConnect();
    Statement stmt = con.createStatement();
    Statement stmt2 = con2.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * from class");
    ResultSet rs2 = stmt2.executeQuery("SELECT * from intervals");
    while (rs.next()) {
        clasess.add(rs.getString(2));
    }
    while (rs2.next()) {
        intervals.add(rs.getString(2));
    }
} catch (Exception ex) {
    System.out.println(ex);
}

【问题讨论】:

  • 请发布整个堆栈跟踪,而不仅仅是第一行。
  • 也许我错了......但我建议你写rs.beforeFirst() before 每个while 循环

标签: java mysql jdbc


【解决方案1】:

在第二个while 循环中,您调用的是rs.getString 而不是rs2.getString

如果您首先使用更高效的设置,则可以避免这种情况;至少,您在第一个循环期间不必要地打开了 rs2 光标。我看不出您的数据库连接之间的配置有任何差异,因此只需使用一个Connection,然后重用StatementResultSet 变量,在while 循环之间替换它们。

【讨论】:

    【解决方案2】:

    异常来自代码 interval.add(rs.getString(2)); 你不应该使用 rs.getString(2)。 rs的结果集关闭了与数据库的连接。

    我认为你想使用 rs2,小心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 2016-03-25
      相关资源
      最近更新 更多