java.sql.SQLException: недопустимое состояние курсора - нет текущей строки - PullRequest
2 голосов
/ 07 июля 2011

Я получаю эту ошибку, когда использую метод getString из ResultSet. Я использую возвращенный ResultSet первого метода для второго метода. Соответствующий код:

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";
}

Любая помощь очень важна для решения этой проблемы.

Ответы [ 2 ]

3 голосов
/ 07 июля 2011

После вашего оператора while стоит точка с запятой.

while(rs.next());
3 голосов
/ 07 июля 2011

Посмотрите на этот код:

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

Вы просматриваете все данные, пока не переместите курсор с на последнюю строку ... и затем попытаетесь получитьданные.С учетом вашего отступа, я подозреваю, что вы не ставили точку с запятой в конце цикла while - поэтому всегда полезно использовать фигурные скобки, а также получить IDE для форматирования кода ... это делает такого родавещь очевидная.Хотя даже без точки с запятой, я не думаю, что это лучший способ выразить это.

Я думаю, вы хотите:

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