2015-08-27 3 views
1

Я хочу использовать два запроса sql в своем java-коде. в первом запросе сохраняются все строки таблицы2, а второй - по строкам один за другим. Я написал следующий код, но он сталкивается с «Ошибка этого ResultSet, это означает 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()); 
} 
+1

Вместо цикла по результату и затем запустить заявление для каждой итерации, объединить эти два заявления в один. Это будет намного быстрее (внутренний запрос, похоже, ничего не использует из внешнего запроса) –

ответ

2

Вам необходимо создать отдельный объект 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()); 
} 
+0

Спасибо большое, дорогая @ Харшит Шривастава. Это было здорово. –

+0

@Arashm, если это то решение, которое вам нужно, то принимайте его как ответ. –

+0

@ Harshit Shrivastava. Извините. вы имеете в виду, что у меня должна быть новая связь и заявление? –

Смежные вопросы