2011-07-07 50 views
2

我在使用ResultSet中的getString方法時不斷收到此錯誤。我使用第一種方法的返回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); 

你通過所有的數據循環,直到你移動光標關閉最後一行...然後試圖獲取數據。考慮到你的縮進,我懷疑你不打算在循環結束時使用分號 - 這就是爲什麼總是使用花括號,並且讓你的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

相關問題