2011-07-07 22 views
2

ResultSetからgetStringメソッドを使用すると、このエラーが発生します。私は2番目のメソッドの最初のメソッドの返されたResultSetを使用します。関連コード:java.sql.SQLException:無効なカーソル状態 - 現在の行がありません

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

この問題を解決するには、何か助けてください。このコードでは

答えて

3

セミコロンがあなたのwhile文の後にあります。

while(rs.next()); 
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? 
} 
+0

はい私はそれが実際に私が望んでいた方法ですが、私はいくつかの変更を加えていましたので、セミコロンがどのようにそこに行くかを推測します。ご協力いただきありがとうございます。 – RandellK02

関連する問題