java.sql.SQLException: Operation not allowed after ResultSet closed

0
resultSet = statement.executeQuery("SELECT `username` FROM `czlonkowie` WHERE `klucz` = '"+key+"' ;");
int whajl = 0;

while(whajl == resultSet.getRow())
{
   statement.executeUpdate("DELETE FROM `czlonkowie` WHERE `klucz` = '"+key+"' ;");
   whajl++;
}

Błąd wyskakuje w linii z while (ten wymieniony w tytule), nie mam pojęcia o co chodzi. Key jest definiowany wcześniej, jeśli byłoby to potrzebne.

0

Nie ogarniam tego kodu...

Chcesz usunąć, to po co pierwsze zapytanie wykonujesz gdy drugie wystarczy do usunięcia?

Poza tym na resultSecie powinieneś wykonywać next() jeśli chcesz się po nim poruszać.

Co do błędu:

Za pierwszym razem wchodzimy do pętli while bo whajl == 0 i resultSet.getRow() zwraca 0 (http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#getRow()).

Gdy jesteśmy w tej pętli to statement.executeUpdate("DELETE...") jest wykonywany przez ten sam statement, który wykonywał SELECT - a to z kolei powoduje zamknięcie resultSetu. Przy następnym sprawdzeniu warunku pętli while resultSet jest zamknięty dlatego otrzymujesz taki błąd.

Mam nadzieję, że w miarę zrozumiale wytłumaczyłem.

Ogólnie proponuje przeczytać chociażby jakiś tutorial o jdbc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1