2016-07-22 94 views
0

這裏是我的代碼如何在這種情況下返回true或false?

public boolean changePassword(String password, String id) { 

    try { 

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

     Class.forName("com.mysql.jdbc.Driver"); 
     Connection conn = DriverManager.getConnection(DB_URL, DBuser, DBpassword); 


     Statement st = conn.createStatement(); 
     String updateQuery = "update teacher_registration set password="+password+"where teacher_id="+id; 
     ResultSet rs = st.executeQuery(updateQuery); 

     if(rs!=null){ 
      return true; 
     }else{ 
      return false; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

我想返回true,如果RS不爲空,否則返回假。

但我在這個方法的左括號出現錯誤。它要求我再次返回true或false,即使我之前在try catch塊中這樣做了。

這是我第一次使用java。

請幫助!

+0

你不應該'從'try'塊return'。請參閱http://stackoverflow.com/questions/2309964/multiple-returns-which-one-sets-the-final-return-value – bradimus

+0

是的。我改變了這一點。現在我需要知道我的更新查詢是否有效。 – walimbeakshay

回答

1

我覺得更新查詢碎片不會結合在一起很好。

在這種情況下,'其中'成爲您的密碼(最後)的一部分。

試試這個:

String updateQuery = "update teacher_registration set password="+password+" where teacher_id="+id; 

另外,您可以將您的病情爲塊或者做得更好,如下所示。

代碼的完整版:

public boolean changePassword(String password, String id) { 

    try { 

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

     Class.forName("com.mysql.jdbc.Driver"); 
     Connection conn = DriverManager.getConnection(DB_URL, DBuser, DBpassword); 


     Statement st = conn.createStatement(); 
     String updateQuery = "update teacher_registration set password="+password+" where teacher_id="+id; 
     ResultSet rs = st.executeQuery(updateQuery); 
     if(rs!=null){ 
      return true; 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 

} 
+0

這麼愚蠢的錯誤。這就結束了問題!謝謝! – walimbeakshay

+0

@walimbeakshay:祝你好運。 –

1

你的錯誤是你返回try塊中的值。如果失敗了,你將不會返回任何東西。嘗試移動try語句塊外的return語句或添加一個返回false;在catch塊之後。

+0

如果查詢已經工作或者沒有工作,我需要先知道。導致其不更新表格。 – walimbeakshay

3

做這樣

public boolean changePassword(String password, String id) { 
    boolean result = false; 

try { 

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 

    Class.forName("com.mysql.jdbc.Driver"); 
    Connection conn = DriverManager.getConnection(DB_URL, DBuser, DBpassword); 


    Statement st = conn.createStatement(); 
    String updateQuery = "update teacher_registration set password="+password+"where teacher_id="+id; 
    ResultSet rs = st.executeQuery(updateQuery); 

    if(rs!=null){ 
     result = true; 
    }else{ 
     result = false; 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
return result; 
} 
+0

不,這不起作用.....如果我最初設置了result = true,即使密碼不變,它也會返回true ... – walimbeakshay

+0

@walimbeakshay您不初始化爲表示成功或「工作完成」。您初始化爲指示失敗或「尚未完成」的值。 –

0

東西如果在你的try塊生成異常,您return語句將無法達成。捕獲異常之後,您只需返回一個值。我假設如果更改成功,則返回true,因此如果發生異常,則返回false。

try{ 
    // Your code 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
return false; 
+0

我認爲這是工作,但現在我不知道如果檢查rs不爲空是真的給我的結果。我的意思是它根本不改變密碼。 – walimbeakshay

相關問題