2012-03-03 126 views
1

我有一個方法將字符串值作爲參數,然後檢查數據庫中是否存在字符串值!如果字符串值已經存在,該方法應該返回true,否則返回false!在我運行該方法之前,我得到一個編譯錯誤「缺少return語句」!有沒有人在下面的代碼中發現錯誤?編譯錯誤:缺少返回語句

public boolean checkID(String sid) 
{ 
    try 
    { 
     String sessionID = null; 
     if(dBConnection.connect()) 
     { 
      Connection con = dBConnection.getConnection(); 
      String query = "SELECT sidvalue FROM sessionid where tokenvalue='" + sid + "'"; 
      Statement pstmt = con.createStatement(); 
      ResultSet resultset = pstmt.executeQuery(query); 

      while (resultset.next()) 
      { 
       sessionID = resultset.getString(1); 
       if(sid.equalsIgnoreCase(sessionID)) 
       { 
        return true; 
       } 
       else 
       { 
        return false; 
       } 
      } 
      dBConnection.disconnect();  
     }//End of If statement 

    }//End of Try block 
    catch (Exception e) 
    { 
     System.out.println(e); 
     return false; 
    } 
}//End of method 

回答

6

如果執行沒有傳遞給if語句和/或while循環會怎麼樣?這種情況沒有回報價值。使用布爾變量或false值返回。只需在該行dBConnection.disconnect();之後添加return false;語句,即在您的嘗試塊的if語句內的while循環之後,就會完成。

順便說一句,我建議你在finally子句中使用數據庫斷開連接語句,而不是在try塊內部。如果你的方法在while循環內返回任何值,很可能dBConnection.disconnect();不會被執行。移動此行dBConnection.disconnect();只是這樣的catch塊後finally塊:

try 
{ 
... 
} 
catch(Exception e) 
{ 
... 
} 
finally 
{ 
    dBConnection.disconnect(); 
} 
+0

什麼意思是默認布爾值?謝謝 – Xris 2012-03-03 04:27:24

+0

@Xris請看我的編輯。 – Juvanis 2012-03-03 04:28:49

+0

在while循環後添加** return false **時,我仍然遇到相同的錯誤! – Xris 2012-03-03 04:35:00

1

如果if語句,如果(dBConnection.connect()),返回false,那麼沒有爲方法沒有return語句。你可以添加一個finally語句,或者你可以附加一個else來返回你想要的值

0

嘗試下面的代碼。它應該可以解決您的問題:

public boolean checkID(String sid) { 
    try { 
     String sessionID = null; 
     if(dBConnection.connect()) { 
      Connection con = dBConnection.getConnection(); 
      String query = "SELECT sidvalue FROM sessionid where tokenvalue='" + sid + "'"; 
      Statement pstmt = con.createStatement(); 
      ResultSet resultset = pstmt.executeQuery(query); 
      while (resultset.next()) { 
       sessionID = resultset.getString(1); 
       if(sid.equalsIgnoreCase(sessionID)) { 
        return true; 
       } else { 
        return false; 
       } 
      }   
     } else { 
      return false; 
     } 
    } catch (Exception e) { 
     System.out.println(e); 
     return false; 
    } 

    finally { 
     dBConnection.disconnect();  
    } 
}//End of method 
+0

如果確實如此,我會感到驚訝。這是否編譯? – 2012-03-03 05:46:07

+0

編譯已成功完成! – 2012-03-03 06:21:59

+0

啊哈,我看你已經修好了。 – 2012-03-03 06:36:25