Operation not allowed after Result Set closed

Status
Nicht offen für weitere Antworten.

Proggy

Bekanntes Mitglied
Hallo,

bekomme obige Fehlermeldung, aber verstehe nicht, wieso, denn mein Result-Set rs2 ist meiner Meinung nach doch nicht geschlossen, oder:

Code:
else {     //Ausgabe der Position in der Highscore-Liste
			 int hi1=1;   //Hilfszaehler  
			try{
				stmt = cn.createStatement();
				
				rs2=stmt.executeQuery("Select * from highscores order by score desc");
				
				}catch(Exception e){;} 
				
                        try{
				rs2.beforeFirst();    //hier soll der Fehler liegen!!!
			    rs2.next();
				while (rs2.getString("nick")!=spieler)
			     {
			     hi1++;
			     rs2.next();
			     } 
			
			     }catch(Exception e){e.printStackTrace();} 
			
			   String pos="Sie belegen Platz"+hi1+"!";
			   g.drawString(pos,30,100);
			   try{cn.close();}catch(Exception e){;} 
		     }

rs2 verwende ich hier zum erstenmal.

Gruß
Andreas
 

spoensche

Mitglied
Verwende mal in deinem "catch block" die SQLEXception anstatt der standard Exception. Weiterhin reicht es wenn du die ausführung des statements und die result set iteration in einen try block schreibst und du brauchst nach dem ausführen des statements nicht noch zusätzlich den cursor des result sets nich mit beforeFirst() zu setzten.

Beispiel:

Dein code:


Code:
try{
            rs2.beforeFirst();    //hier soll der Fehler liegen!!!
             rs2.next();
            while (rs2.getString("nick")!=spieler)
              {
              hi1++;
              rs2.next();
              }
         
}
catch(Exception e) {e.printStackTrace();}


Verbesserung:

Code:
try{
            
            
            while (rs2.next()) {
                if (rs2.getString("nick") != "spieler")
                     hi1++;
              
              }
         
}
catch (SQLException e) {
     e.printStackTrace
}
 

Proggy

Bekanntes Mitglied
danke, aber das hat nix gebracht. Aber wenn ich das Statement
Code:
cn.close(),
, mit dem ich die Connection cn weiter unten schließe, rausnehme, verschwindet die Meldung. Stattdessen funktioniert dann aber die Schleife nicht mehr. Er soll die Tabelle solange durchlaufen, bis er in der Spalte mit dem Namen nick den Spieler findet. Spieler ist eine String-Variable, die ich so belegt habe:
Code:
String spieler="\"Alfonso\"";

aber er läuft unendlich, bsi er abbricht mit "After end of result set".

Verstehs nicht. Es gibt einen Spieler mit dem Namen Alfonso in der Tabelle[/code]
 

spoensche

Mitglied
also willst du den highscore von einem einzelnen spieler haben?? wenn ja, versuchs mal so:

Code:
SELECT * FROM highscore WHERE nick='spieler'
 

Proggy

Bekanntes Mitglied
Danke, aber ich sortiere zuerst die Ausgabe und suche dann die Position von, in diesem Falle, Alfonso, also seinen Rang in der Highscore-Liste
 

Proggy

Bekanntes Mitglied
Kann es sein, daß in der Schleife

Code:
while (rs2.getString("nick")!=spieler)
		              {
		              hi1++;
		              rs2.next();
		              }
der Fehler liegt, da er über die Anzahl der Datensätze hinaus läuft, also den Spieler mit dem Namen Alfonso nicht findet.

Diesen habe ich weiter oben mit
Code:
String spieler="\"Alfonso\"";
festgelegt.
 
S

SlaterB

Gast
deine Schleife ist Müll ;)
es wurde doch schon eine andere vorgeschlagen, die den boolean-Rückgabewert von rs2.next() berücksichtigt

außerdem musst du Strings mit equals vergleichen,
mit == wird in diesem Fall (ein String aus dem Programm, einer aus der DB) garantiert nicht klappen

Code:
while (rs2.next() && !spieler.equals(rs2.getString("nick"))) {
      hi1++;
}

so, nun stehen die Chancen höher,

ansonsten kläre genauer wann der Fehler kommt,
falls dir das die Fehlermeldung nicht sagt (Zeile)

mache Ausgaben:
System.out.println("ResultSet geladen");
System.out.println("in Schleife, aktueller Nick ist: "+..);
System.out.println("nach Schleife, vor close");
System.out.println("nach close");

usw.
 

Proggy

Bekanntes Mitglied
Danke! Das hilft mir weiter. Wusste nicht, daß ich nicht mit == vergleichen darf.
Nochmal danke
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Operation not allowed after ResultSet closed Datenbankprogrammierung 13
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
Thallius MySQL Warum gibt result verschiedene Datumsformate? Datenbankprogrammierung 1
D Datenbank result als Auswahliste im GUI anzeigen lassen Datenbankprogrammierung 0
C Derby/JavaDB result set closed Datenbankprogrammierung 3
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
M Logikfrage: Auf zweites Result warten Datenbankprogrammierung 2
M MySQL JDBC Result abfangen Datenbankprogrammierung 7
S executeBatch result immet mit Statement.SUCCESS_NO_INFO Datenbankprogrammierung 4
H com.mysql.jdbc.NotUpdatable: Result Set not updatable Datenbankprogrammierung 2
S Result Set in Charts ausgeben! Datenbankprogrammierung 7
P Problem mit Result-set Datenbankprogrammierung 13
zilti java.sql.SQLException: Before start of result set Datenbankprogrammierung 2
P Fehler: result-set zeigt auf null, aber warum Datenbankprogrammierung 4
megachucky Problem mit: SQL Exception Before start of result set Datenbankprogrammierung 2
G How to put SQL query result into a file Datenbankprogrammierung 3
D result ausgabe in Html Tabelle Datenbankprogrammierung 10
K java.sql.SQLException: Before start of result set Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben