java.sql.SQLException:无效的游标状态 - 没有当前行

时间:2011-07-07 18:18:28

标签: java sql derby embedded-database

当我使用ResultSet中的getString方法时,我一直收到此错误。我使用第一种方法的返回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 个答案:

答案 0 :(得分:3)

看看这段代码:

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?
}

答案 1 :(得分:3)

在你的声明之后有一个分号。

while(rs.next());