我想使用来自同一数据库的两个查询但我收到错误:
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);
}
答案 0 :(得分:3)
在您的第二个while
循环中,您正在呼叫rs.getString
而不是rs2.getString
。
如果您首先使用更高效的设置,则可以避免这种情况;绝对最小值,你在第一次循环期间不必要地打开rs2
光标。我看不出您的数据库连接之间的配置有任何差异,所以只需使用一个Connection
,然后重用Statement
和ResultSet
变量,在while
循环之间替换它们
答案 1 :(得分:0)
异常来自代码interval.add(rs.getString(2)); 你不应该使用rs.getString(2)。 rs的结果集关闭了与数据库的连接。
我想你想用rs2,小心点。