2015-08-28 13 views
-6

我想這樣做成一個布爾值,將返回true或false。 我根本不知道如何去做,所以我需要一些幫助。把void方法變成一個布爾值-java

public static void checkUSPASS(String a,String b) { 
    try { 
      con = DriverManager.getConnection(url,username, password); 
      stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 
      String sql; 
      sql = "SELECT * FROM db Where Email='"+a+"' and Password='"+b+"'"; 
      ResultSet rs = stmt.executeQuery(sql); 
      if(rs.next()) 
       { 
       //return true 
       } 
      else 
       { 
       //return false 
       } 

     } 
     catch (SQLException ex) { 
     ex.printStackTrace(); } 

     } 

我應該可能得到所有的聲明,但我想聽聽你們怎麼看。

+0

你是什麼意思與「讓所有的聲明出來」? – dotvav

+0

@dotvav「try」和「if(rs.next())」之間的部分,可能不應該在布爾值內,但我不確定。 – kuki

+0

'boolean'是一個原始類型,除了'true'或'false'之外,你不能在'boolean'中放置任何東西。您顯示的代碼是一種方法。您可以更改該方法的返回類型,並將其中的任何內容放入其中。 – dotvav

回答

1

首先改變方法簽名返回一個值:

public static boolean checkUSPASS(String a,String b) 

然後從方法中返回一個值:

return true; 

或:

return false; 

注意,所有代碼路徑必須返回一些值。所以,你必須這樣在你的try塊:

if (rs.next()) { 
    return true; 
} 
else { 
    return false; 
} 

但在到達您的catch塊的情況下,仍然必須返回的東西:

catch (SQLException ex) { 
    ex.printStackTrace(); 
    return false; 
} 
+0

給我幾分鐘試試這:),謝謝它的進步。 – kuki

+1

所有代碼路徑必須返回值**或拋出異常** – dotvav

+0

@dotvav:True,異常是方法的有效退出條件。但是這個方法沒有聲明'throws'子句。如果OP希望的話,也可以對方法簽名進行更改。 – David

0

要改變功能boolean Java中的所有你有在你的函數定義中將void更改爲boolean,並在所有端點返回true或false。

+0

我同意,我不是一個聰明人,我想我即將解決這個愚蠢的問題。我很抱歉 ! :) – kuki

3

雖然這不是你的問題的答案,但我相信它會幫助你使你的方法更好。可能的評論會更合適,但大片文字的評論很難閱讀。

Don't像你這樣使用SQL查詢字符串組合。使用PreparedStatement而不是那個。

處理您的方法內部的異常或進一步拋出它們。打印堆棧跟蹤不是的異常處理,它隱藏了來自最終用戶的問題。

要進一步拋出異常,請將throws SQLException添加到您的方法聲明中,並從方法體中刪除try/catch構造。它將允許調用者處理異常,並在稍後避免許多難以捕捉的錯誤。

不要將密碼存儲爲字符串,這是不好的做法。 Hash passwords with salt並存儲密碼哈希碼。

最後你的方法聲明看起來應該:

public static boolean checkUSPASS(String username,String hashCode) throws SQLException 
+0

你是對的,但這只是一個小項目,沒有什麼真正的嚴重。謝謝,我將讀取有關散列密碼的信息,以備將來使用+1。 – kuki

+2

我認爲在學習和處理小型項目時,注意正確的習慣非常重要。之後,當您處理更大的項目時,它將返回穩定且可維護的代碼。 – 2015-08-28 14:13:21