Operation not allowed after ResultSet closed

Status
Nicht offen für weitere Antworten.

AlArenal

Top Contributor
Wenn ihr diesen Fehler mal haben solltet,

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

habt ihr mal voll verloren!

Der gute Herr Google hilft einem hier nämlich mal gar nicht. Ist voll klasse, man hat einen Code á la

Code:
1 rs = stmt.executeQuery(sql);
2 
3 while (rs.next()) {
4  // tu was
5 }

hat, und als Dank bekommt man für Zeile 3 obigen Fehler. Das Beste ist: Den halben Tag läuft die Anwendung und auf einmal kommt er mir jedes Mal an derselben Stelle mit dem Quatsch an. DB ist MySQL 3, der Connector ist die 3.0.10, JDK ist 1.4.2_3 und das ist mal einer dieser Fehler, wo man sich keiner Schande bewusst ist.
 

BRT006

Aktives Mitglied
Sicher dass du nicht irgendwo dein Statement Objekt schließt? Das hätte nämlich genau diesen Effekt
 

AlArenal

Top Contributor
BRT006 hat gesagt.:
Sicher dass du nicht irgendwo dein Statement Objekt schließt? Das hätte nämlich genau diesen Effekt

Zwischen den beiden Zeilen beifndet sich genau 0 Code!
Ich habe jetzt auch rausgefunden, dass der Fehler nur auftritt, wenn das SQL-Statement auch in der DB mehrere (!) Zeilen liefert. Ein getRow() liefert seltsamerweise immer 0.

Ich blick das echt nicht.. ich schaue morgen mal, ob ich alternativ mit einem RowSet arbeiten kann, das erklärt zwar nicht die Ursache, behebt aber hoffentlich wenigstens das Problem.
 

AlArenal

Top Contributor
Fehler gefunden!

Innerhlab der while-Schleife gab es noch eine weitere SQL-Abfrage. Diese benutzte zwar eine andere ResultSet-Variable, aber dieselbe Statement-Variable. Dummerweise hat so ein Statement die Angewohnheit bei erneuter Abfrage das zuvor erzeugte ResultSet zu schließen und daher stammte der Fehler.

Ich verstehe nun nur noch weniger, warum der Code vorher funtkioniert hat...
 

DP

Top Contributor
hat jemand eine ahnung wie ich einen resultset mehrmals durchlaufen kann?!

danke
 

AlArenal

Top Contributor
DP hat gesagt.:
hat jemand eine ahnung wie ich einen resultset mehrmals durchlaufen kann?!

danke

Code:
rs.beforeFirst();

Und danach kannste einfach wieder mit

Code:
while (rs.next()) {}

nochmal durchlaufen.
 

Orolhawion

Aktives Mitglied
gibts dabei dann nicht nochwas zu beachten?
ich bekomm dann das...
java.sql.SQLException: Ungültiger Vorgang bei Nur-Weiterleiten-Ergebnismenge: beforeFirst

eigentlich will ich nur datensätze zählen, dafür durchlaufe ich das ResultSet mit nem counter
danach setze ich den pointer eben mit
Code:
res.beforeFirst();
wieder auf die erste position und durchlaufe das ResultSet erneut um den kram in eine jtable zu schreiben... geht das nur so oder geht das auch einfacher?
(z.b. wie in php mit einer funktion wie
Code:
$count=mysql_num_rows($argument);
)
DB ist eine Oracle-DB...
 

magneto

Mitglied
HI Orolhawion,

also ich würde das so machen. Vorausgesetzt du willst nur die Datensätze zählen.

Code:
...
ResultSet r;
...
 statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
...

              r.last();
     int	 zeile=r.getRow();
	 r.beforeFirst();

while(r.next()){
...
}

gruß
ivan
 

Orolhawion

Aktives Mitglied
klingt gut, liefert mir jetzt das was du da geschrieben hast auch wirklich die zahl des letzten satzes oder nur die höchste id?! das hat sowas von
Code:
SELECT * FROM table ORDER BY ID DESC LIMIT 1
angenommen die letzte id wäre 99 und die lösche ich und füge eine neue hinzu dann hat die den wert 100 aber es sind trotzdem nur 99 datensätze weil eben 99 fehlt...

ich brauch die anzahl der datensätze für die größe eines arrays.. ;)
 

magneto

Mitglied
HI,

hoffe ich habe dich nicht falsch verstanden :?:
also damit bekommstdu die Anzahl der Datensätze(Reihen).
wenn du was löschst und dann was neues einfügst..würde ich einfach ein neues
ResultSet anfordern.

greetz
ivan

oder meinst du was ganz anderes ??
 

Orolhawion

Aktives Mitglied
ja im prinzip mein ich das was du denkst!
ziel des ganzen ist folgendes: ich hole aus einer oracle-db per SELECT eine bestimmte anzahl von datensätzen raus, die je nach abfrage ständig variert. um diese daten jetzt in einer jtable darzustellen benötige ich zwei arrays. eins für die tabellenköpfe der jtable und eins für die daten für die jtable.

in PHP würd ich das so machen:

Code:
<?php
...
// Tabellenköpfe
echo "<table><tr><td>1</td><td>2</td>... </tr>";
// Tabelleninhalt
while ($row=mysql_fetch_array($get_data))
{
        echo "<tr><td>$row[1]</td><td>$row[2]</td>... </tr>";
}
echo "</table>";
?>

dann würde die tabelle so lang werden wie eben datensätze da sind, da es sowas äußerst nützliches in java nicht zu geben scheint (korrigier mich wenn ich falsch liege!) muß ich also den umweg über datensätze zählen gehen um die größe des arrays bestimmen zu können, wo nachher die daten reinkommen... klar soweit? :?
 

magneto

Mitglied
Hi,
also ich bin weit davon weg ein Profi zu sein...
Das gleiche Problem hatte ich auch als ich meinen SQl-Trainer geschrieben habe.
Da habe ich es so gemacht, aber nur weil ich keine bessere Lösung gefunden habe.
So funktioniert es aber auf alle Fälle. Datensätze ermitteln und dann die Arrays für
JTable anlegen.
Wenn du willst poste ichden ganzen Code den ich damals eingesetz habe.
Ist mit new Access DB..

Gruß
ivan
 

Orolhawion

Aktives Mitglied
nee, geht schon, den code hatte ich ja schon von anfang an fertig, ich wollte nur wissen ob das eben auch einfacher geht, als so.. :) danke trotzdem!
schönes wochenende!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Operation not allowed after Result Set closed Datenbankprogrammierung 7
J illegal operation on empty result set Datenbankprogrammierung 21
P Access : Operation muss eine aktualisierbare Abfrage verwend Datenbankprogrammierung 10
G SQLException: No operations allowed after connection closed Datenbankprogrammierung 2
S ResultSet als Parameter an andere Klasse übergeben Datenbankprogrammierung 3
Z ResultSet ist null warum? Datenbankprogrammierung 12
R HSQLDB ResultSet update aktualisiert DB, aber nicht das ResultSet Datenbankprogrammierung 2
Dimax Erstellen ResultSet und Statement Datenbankprogrammierung 30
C PostgreSQL ResultSet.TYPE_SCROLL_SENSITIVE setzen Datenbankprogrammierung 2
L MySQL Bekomme einen Fehler beim ResultSet Datenbankprogrammierung 12
L Zugriff auf ein Resultset Datenbankprogrammierung 7
L MySQL ResultSet vollständig auslesen Datenbankprogrammierung 20
D Resultset schließen ?? Datenbankprogrammierung 5
T Oracle Resultset to Array sehr langsam. Datenbankprogrammierung 8
B Probleme mit java.sql.SQLException: ResultSet closed Datenbankprogrammierung 21
J SQLite ResultSet closed -- Wiederholende DB-Abfragen Datenbankprogrammierung 6
Z MySQL Probleme mit resultSet executQuery Datenbankprogrammierung 3
L ResultSet Datenbankprogrammierung 1
J wie mit resultset.next() über Datensätze iterieren? Datenbankprogrammierung 15
R MySQL Umgang mit ResultSet/Fremdschlüssel ausgeben Datenbankprogrammierung 2
D MySQL ResultSet als Stream weiter geben Datenbankprogrammierung 9
M ResultSet Cachen Datenbankprogrammierung 3
R ResultSet mit "Untertabellen" Datenbankprogrammierung 4
N SQL-Statement Auslesen des Resultset wird immer langsamer Datenbankprogrammierung 6
R Resultset.last() Problem Datenbankprogrammierung 12
PaulG Leeres ResultSet initialisieren Datenbankprogrammierung 6
J Frage zu ResultSet Datenbankprogrammierung 3
J SQL ResultSet Previous Datenbankprogrammierung 10
S MySQL ResultSet in ein Array übertragen Datenbankprogrammierung 7
H PostgreSQL Objekte aus ResultSet Datenbankprogrammierung 5
H ResultSet is closed tritt bei JSF aber nicht bei einer Java-Applikation auf Datenbankprogrammierung 10
O Oracle Resultset greift auf Spaltenüberschriften zu Datenbankprogrammierung 2
Kenan89 Wieso klappt das ResultSet nicht? Datenbankprogrammierung 3
C ResultSet enthält nicht alle Daten Datenbankprogrammierung 4
F Derby/JavaDB Resultset in JTablemodel Datenbankprogrammierung 2
F Oracle ResultSet zu einer HashMap<Integer, String[]> Datenbankprogrammierung 6
B SQLite ResultSet is TYPE_FORWARD_ONLY Datenbankprogrammierung 5
T Exception ResultSet Datenbankprogrammierung 7
0 ResultSet in JTable Datenbankprogrammierung 14
S [SQL] ResultSet Datenbankprogrammierung 4
R ResultSet Datenbankprogrammierung 4
I Sonderbehandlung wenn ResultSet leer ist Datenbankprogrammierung 9
I Problem mit ResultSet Datenbankprogrammierung 2
I SQL_Abfrage-Ergebnis (ResultSet) in String[] speichern Datenbankprogrammierung 29
B ResultSet wirft komische NullPointerException. Datenbankprogrammierung 3
R Detached ResultSet Datenbankprogrammierung 3
F generelle Vorgehensweise ResultSet Datenbankprogrammierung 5
S ResultSet Datenbankprogrammierung 2
A MySQL ResultSet.updateBytes schlägt fehl Datenbankprogrammierung 2
F ResultSet kann Datenbank nicht update, warum? Datenbankprogrammierung 3
T ResultSet befehl für leere Spalte nicht lesen Datenbankprogrammierung 4
S ResultSet einer Datenbankabfrage - Nullpointer Exception Datenbankprogrammierung 13
A PostgreSQL anfängerfrage: resultset zeilenweise auslesen Datenbankprogrammierung 2
T MySQL ResultSet zurückgeben nachdem Connection geschlossen wurde? Datenbankprogrammierung 3
K Keine ResultSet bei if in StoredProcedure Datenbankprogrammierung 16
D ResultSet gibt nichts aus. Datenbankprogrammierung 3
trash ResultSet Syntax Fehler Datenbankprogrammierung 11
ARadauer JDBC ResultSet schließen? Datenbankprogrammierung 4
M Oracle Problem mit Resultset Datenbankprogrammierung 11
J jdbc ResultSet types Datenbankprogrammierung 5
R Frage zu PreparedStatement/ResultSet Datenbankprogrammierung 16
F ResultSet to String[] Datenbankprogrammierung 3
E ResultSet in HashMap Datenbankprogrammierung 8
K Tabelle mit resultset refreshen? Datenbankprogrammierung 4
M Problem mit ResultSet bei SQL Server 2005 Datenbankprogrammierung 6
S ResultSet in ArrayList ablegen Datenbankprogrammierung 17
G Daten aus ResultSet in String-Liste Datenbankprogrammierung 13
T ResultSet initialisieren Datenbankprogrammierung 2
C kein Resultset Datenbankprogrammierung 2
G ResultSet: String mit Anführungszeichen einlesen Datenbankprogrammierung 8
T ResultSet-Inhalt in Arrays schreiben Datenbankprogrammierung 3
S ResultSet variabel auslesen Datenbankprogrammierung 4
D Anzahl der Elemente im ResultSet ermitteln Datenbankprogrammierung 8
A Leeres ResultSet mit H2 unter Vista Datenbankprogrammierung 3
A Warum ist mein ResultSet leer? Datenbankprogrammierung 5
S ResultSet closed Datenbankprogrammierung 2
Z ResultSet mit einer anderen Datenquelle Datenbankprogrammierung 7
O Spaltenname aus Resultset Datenbankprogrammierung 2
thE_29 ResultSet und doppelte Spalten Datenbankprogrammierung 4
E Neues select auf ein vorhandenes Resultset Datenbankprogrammierung 11
E ResultSet vergisst Reihe? Datenbankprogrammierung 2
N resultset aus andere klasse übergeben Datenbankprogrammierung 3
F ResultSet refresh moeglich? Datenbankprogrammierung 3
S ResultSet enthält keine Daten Datenbankprogrammierung 2
B Geschlossenes ResultSet Datenbankprogrammierung 6
T ResultSet#next Ungültige Reihenfolge (DB2) Datenbankprogrammierung 5
T ResultSet schließen? Datenbankprogrammierung 6
S Tabelle updaten wenn ResultSet aus JDBC-Quelle Datenbankprogrammierung 2
S ResultSet Datenbankprogrammierung 6
F Filtern innerhalb eines Resultset Datenbankprogrammierung 12
S Connection/Statement/ResultSet auf einmal geschlossen Datenbankprogrammierung 8
@ Like-Klausel; NPE bzw. leeres ResultSet Datenbankprogrammierung 4
C Resultset nach connection close weiterreichen Datenbankprogrammierung 5
B No ResultSet was produced Datenbankprogrammierung 2
S ResultSet erweitern ? Datenbankprogrammierung 4
E JDBC, ForwardOnly bei ResultSet nach Uebergabe Datenbankprogrammierung 4
R ResultSet liefert oracle.sql.TIMESTAMP, aber unbrauchbar Datenbankprogrammierung 9
A Probleme mit ResultSet und getString(i) Datenbankprogrammierung 13
RaoulDuke ResultSet - Wie arbeitet sowas intern Datenbankprogrammierung 2
N Probleme mit "nur vorwärts gerichtete ResultSet" Datenbankprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben