2012-04-14 16 views
1

Ich habe ein Problem mit einer Abfrage in meiner Java-Anwendung. Es ist eine einfache Abfrage, um einen Benutzer-Score basierend auf ihrem Namen zu erhalten, aber ich bekomme ständig einen Fehler und kann nicht erkennen, wo das Problem herkommt.Java SQL: Fehler vor Ergebnismenge

  String driver = "com.mysql.jdbc.Driver";  
     Class.forName(driver).newInstance(); 

     con = DriverManager.getConnection(url, USERNAME, PASSWORD); 
     st = con.createStatement(); 


     PreparedStatement preStatement = con.prepareStatement("select score from playerscore where name=?"); 
     preStatement.setString(1, "tomcat"); 

     ResultSet resultSet = preStatement.executeQuery(); 
     score    = resultSet.getInt(1); 

Könnte jemand ein Auge werfen und mir in die richtige Richtung zeigen?

EDIT: Bild der Stapelüberwachung

http://imageshack.us/photo/my-images/854/stackr.jpg/

+0

Können Sie einen Stacktrace buchen? Es wäre hilfreich. –

+0

Link zum Bild von stacktrace hinzugefügt – MindDrip

+0

Eine Randnotiz: schreibe nicht .newInstance() wo du es geschrieben hast. Class.forName (...) ist genug und das erzeugt nur eine unnötige Instanz des Treibers. –

Antwort

4

Anfänglich wird der ResultSet vor der ersten Zeile positioniert. Daher müssen Sie zunächst resultSet.next() aufrufen, um in die erste Zeile zu wechseln, bevor Sie einen beliebigen Wert abrufen können.

Sie können überprüfen, ob die erste Zeile tatsächlich vorhanden ist, indem Sie die zurückgegebene boolean von resultSet.next() überprüfen.

+0

Lösung! Vielen Dank. – MindDrip