Problem mit Result-set

Status
Nicht offen für weitere Antworten.

Proggy

Bekanntes Mitglied
Hallo,

mit folgendem Code möchte ich in einer Tabelle nach einem Nicknamen suchen:
Code:
try{
			stmt2 = cn.createStatement();
			
			commandstring="SELECT * FROM highscores ORDER BY score DESC, laufzeit ASC;";
			rs2=stmt2.executeQuery(commandstring);  //oder ASC?
			
			}catch(Exception e){e.printStackTrace();} 
			try{
				rs2.beforeFirst();    //hier soll der Fehler liegen!!!
	            
	             while (rs2.next() && !spieler.equals(rs2.getString("nick"))) {
	                 hi5++;
	           }

bekomme aber jedesmal eine NullPointer-Exception in der Zeile rs2.beforeFirst() wenn der Spieler mit diesem Nicknamen nicht gefunden werden kann. Was mache ich falsch? Danke!!
 
wird denn überhaupt ein ResultSet erzeugt?

rs2=stmt2.executeQuery(commandstring);

->

System.out.println("gleich gehts los");
rs2=stmt2.executeQuery(commandstring);
System.out.println("rs2 ist: "+rs2);
 
ich glaube, dass du die spaltennamen in der select anweisung explizit angeben musst, nach welchen du bei der order by-klausel sortierst... bin mir aber nicht mehr so sicher.
 
lass am besten die datenbank suchen:

Code:
commandstring="SELECT * FROM highscores where nick = '"+spieler+"' ORDER BY score DESC, laufzeit ASC"; 
rs2=stmt2.executeQuery(commandstring); 
while(rs2.next()){
    System.out.println(rs2.getString("nick");
}

..so ungefähr
 
Sicher, dass es eine NullPointerException ist und nicht "Curso is forward only" oder so?
Ansonsten mach noch das Semikolon in dem SQL Statement weg.
 
Gibts nen Grund warum man das Semikolon weglassen soll. Hab das nämlich bisher auch überall drin.
 
alex0801 hat gesagt.:
Gibts nen Grund warum man das Semikolon weglassen soll. Hab das nämlich bisher auch überall drin.
Gegenfrage: Gibt es einen Grund das Semikolon zu schreiben? 😉

Es ist i.d.R. ein Trennzeichen für mehrere Statements in DDL. Da du aber nur ein Statement ausführst, ist es
überflüssig.
 
Hallo,

erstmal Danke.

Warum er eine solche Meldung ("NullPointer Execption") erzeugt, ist mir auch schleierhaft.

Meld mich wieder.
 
Anonymous hat gesagt.:
alex0801 hat gesagt.:
Gibts nen Grund warum man das Semikolon weglassen soll. Hab das nämlich bisher auch überall drin.
Gegenfrage: Gibt es einen Grund das Semikolon zu schreiben? 😉

Es ist i.d.R. ein Trennzeichen für mehrere Statements in DDL. Da du aber nur ein Statement ausführst, ist es
überflüssig.

Naja, wenn's nicht stört isses ja egal, oder ?!
 
hmm also das Semikolon ist der abschluss eines SQL-Querys. Ich hab schon Fälle gehabt da hat er ohne nen SQL ERROR gebracht. Die ORDER BY Spalte musst du nicht in der SELECT Clausel angeben da mit * eh schon alle abgedeckt sind.
Zu deinem Eigentlichen Problem da stimme ich mti ARadauer überein. Lass die Datenbank suchen und zähl dann in der while schleife einfach deinen hightscore hoch
also:


Code:
commandstring="SELECT * FROM highscores where nick = '"+spieler+"' ORDER BY score DESC, laufzeit ASC";
rs2=stmt2.executeQuery(commandstring);
while(rs2.next())
{
    hi5++;
}

dann sollte es gehen.

Gruß BB

PS: Warum du das ganze sortierst ist mir unklar!?
 
BigBoss hat gesagt.:
Die ORDER BY Spalte musst du nicht in der SELECT Clausel angeben da mit * eh schon alle abgedeckt


Hallo BigBoss,

ORDER BY und der * habe nichts miteinander zu tun.

SELECT * besagt lediglich, dass er alle FElder aus einer Tabelle selektieren soll.
ORDER BY sortiert nach den angegebenen Feldern.

asc (ascending) besagt aufsteigen, desc(descending) besagt absteigen.



PS: Warum du das ganze sortierst ist mir unklar!?

Na, weil er alle Datensaetze absteigend sortiert nach der highscore anzeigen moechte.


Was hier eher kritisch ist, ist der SELECT * in einer Anwendung, aber das ist ein anderes Thema.


Viele Gruesse
FenchelT
 
Du zählst alle Einträge in der ein bestimmter Spieler vorkommt, oder?

Warum machst du nicht einfach ein select count(*) from?

Das sollte ja das gewünschte Ergebnis bringen und geht um einiges schneller.

Ausserdem hast du ja in deinem Vergleich eine Verneinung drin (!), ist das erwünscht?
 
ich will ermitteln, ob sich der Spieler schon in der highscore-Tabelle befindet. Seine Position in dieser Tabelle interessiert mich.
Nach Spielende (dieser Code-Ausschnitt fehlt hier) gebe ich aus:

" Sie rutschen von Platz (jetzt den Inhalt der hi-Variable ausgeben) auf Platz x. (auch x ermittle ich dort (Code fehlt hier ebenfalls)

das ging ja auch alles mal, habe jetzt das Projekt drei Monate ruhen lassen und plötzlich bekomme ich obige Fehlermeldung beim Ausführen meines Applets.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben