Mysql
 sql >> база данни >  >> RDS >> Mysql

Получаване на java.sql.SQLException:Операцията не е разрешена след затваряне на ResultSet

Проблемът е в начина, по който извличате данни в getStuff() . Всеки път, когато посещавате getStuff() получавате нов ResultSet но не го затваряш.

Това нарушава очакванията на Statement клас (вижте тук - http://docs. oracle.com/javase/7/docs/api/java/sql/Statement.html ):

По подразбиране само един обект ResultSet на обект на Statement може да бъде отворен едновременно. Следователно, ако четенето на един обект ResultSet се преплита с четенето на друг, всеки трябва да е генериран от различни обекти на Statement. Всички методи за изпълнение в интерфейса на оператора имплицитно затварят текущия обект ResultSet на инструкция, ако съществува отворен.

Това, което прави нещата още по-лоши, е rs от кода за повикване. Той също така се извлича извън statement поле, но не е затворено.

В крайна сметка:имате няколко ResultSet отнасящи се до същия Statement обект едновременно отворен.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL – Как да махна таблица, ако съществува в базата данни?

  2. Кога да използвате MongoDB или други ориентирани към документи системи за бази данни?

  3. MySQLi count(*) винаги връща 1

  4. Как да сравним две колони в MySQL

  5. JSON_KEYS() – Връща ключовете от JSON обект в MySQL