2 Stimmen

java.sql.SQLException: Ungültiger Cursorstatus - keine aktuelle Zeile

Ich erhalte immer diesen Fehler, wenn ich die getString-Methode aus dem ResultSet verwenden. Ich verwende das zurückgegebene ResultSet der ersten Methode für die zweite Methode. Relevanter Code:

public ResultSet getStudentRS(){
    try{
        studentRS = s.executeQuery("SELECT * FROM Students "
                + "WHERE StudentID=210569906");
    }
    catch(SQLException error){
        System.err.println("Unable to query for getStudentRS.");
        error.printStackTrace(System.err);
        System.exit(0);
    }
    return studentRS;
}

public String getUserName(){
    try{
        while(rs.next())
            return rs.getString(1) + " " + rs.getString(2); // Exception Here
    }
    catch(SQLException error){
        System.err.println("Unable to query for getUserName.");
        error.printStackTrace(System.err);
        System.exit(0);
    }
    return "Failure";
}

Wir sind für jede Hilfe bei der Lösung dieses Problems dankbar.

3voto

Jon Skeet Punkte 1325502

Sehen Sie sich diesen Code an:

while(rs.next());
return rs.getString(1) + " " + rs.getString(2);

Sie gehen in einer Schleife durch alle Daten, bis Sie den Cursor bewegt haben aus die letzte Zeile... und dann versucht, Daten zu erhalten. Angesichts Ihrer Einrückung vermute ich, dass Sie das Semikolon am Ende der while-Schleife nicht beabsichtigt haben - deshalb ist es immer gut, geschweifte Klammern zu verwenden und auch Ihre IDE dazu zu bringen, Ihren Code zu formatieren... das macht solche Dinge offensichtlich. Aber auch ohne das Semikolon halte ich es nicht für die beste Art, dies auszudrücken.

Ich glaube, Sie wollen:

if (rs.next())
{
    return rs.getString(1) + " " + rs.getString(2);
}
else
{
    // What do you want to do if there are no results?
}

3voto

Kal Punkte 24349

Nach Ihrer while-Anweisung steht ein Semikolon.

while(rs.next());

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X