Java “如何修复”;“此结果集已关闭”;错误?

Java “如何修复”;“此结果集已关闭”;错误?,java,postgresql,Java,Postgresql,我想在java代码中使用两个sql查询。第一个查询保留表2的所有行,第二个查询逐个获取其行。我写了下面的代码,但它面对“ThisResultSet已关闭,这意味着rs ResultSet”错误。我该怎么修理 try{ String sqlSelectTable2 = "SELECT * FROM table2;"; ResultSet rs = stmt.executeQuery(sqlSelectTable2); while (rs.next()) {

我想在java代码中使用两个sql查询。第一个查询保留表2的所有行,第二个查询逐个获取其行。我写了下面的代码,但它面对“ThisResultSet已关闭,这意味着rs ResultSet”错误。我该怎么修理

try{
 String sqlSelectTable2 = "SELECT * FROM table2;";
        ResultSet rs = stmt.executeQuery(sqlSelectTable2); 
while (rs.next()) {
            String strLineId = rs.getString(1);
           String strPoints = rs.getString(2);
        String sqlWithin = "SELECT ST_Within(ST_GeometryFromText('POINT( ),ST_GeomFromText('POLYGON((443425 4427680, 441353 4427680, 441368 4426075, 443762 4426149, 443425 4427680))', 4326));";
ResultSet rsWithin = stmt.executeQuery(sqlWithin);
} // end while ... **It get error when it is reading second ResultSet **
} catch (Exception e) {
System.out.println(e.getMessage());
}

您需要为内部查询创建单独的PreparedStatement对象

try{
 String sqlSelectTable2 = "SELECT * FROM table2;";
 ResultSet rs = stmt.executeQuery(sqlSelectTable2); 
 while (rs.next()) {
       String strLineId = rs.getString(1);
       String strPoints = rs.getString(2);
       PreparedStatement preparedStatement = null;
       String sqlWithin = "SELECT ST_Within(ST_GeometryFromText('POINT( ),ST_GeomFromText('POLYGON((443425 4427680, 441353 4427680, 441368 4426075, 443762 4426149, 443425 4427680))', 4326));";

       preparedStatement = dbConnection.prepareStatement(sqlWithin);
       ResultSet rsWithin = preparedStatement.executeQuery();
} // end while ... **It get error when it is reading second ResultSet **
} catch (Exception e) {
System.out.println(e.getMessage());
}

@阿拉什姆,如果这是你需要的解决方案,那么就接受它作为答案。@Harshit Shrivastava。打扰一下你的意思是我应该有新的连接和语句?不,连接应该是相同的,但是无论你创建什么对象,比如resultset,查询数据库的语句对象都应该是不同的。我还没有得到它。preparedStatemen为null,get错误。内部查询的SQL在循环中没有更改。在这种情况下,内部查询的
PreparedStatement
应该在循环之外创建(=prepared),而不是一次又一次地准备它。而不是循环一个结果,然后为每次迭代运行一个语句,而是将这两个语句组合成一个语句。这将快得多(内部查询似乎无论如何都不会使用外部查询中的任何内容)