2016-12-02 58 views
-2

如果我的代碼真或假的結果,爲什麼

public boolean login(String username, String pass) throws SQLException{ 
Connection conn = connect(); 
PreparedStatement st = conn.prepareStatement("select * from users where ime = ? and sifra = ?"); 
st.setString(1, username); 
st.setString(2, pass); 
ResultSet rs = st.executeQuery(); 
return rs.next(); 
} 

一件,另一

if(login(creds[0], creds[1])) 

爲什麼結果「if」語句真或假。我知道這是真的或假,但我不明白爲什麼。我錯過了一些大腦信息。有人可以一步一步地爲我咀嚼嗎? 感謝先進!

+2

因爲'login()'返回'boolean'。 – Gendarme

回答

0

您的login方法返回一個boolean,它只能是真或假。看看該方法的最後一行:

return rs.next(); 

注意你是如何返回結果,呼籲rsnext()的價值?從您的代碼中,rsResultSet。你可以看看的java api docs要找到next()回報

真,如果新的當前行是有效的;如果沒有更多行,則返回false

+0

是的,但我仍然不明白爲什麼它是真的或假的。 用st.setstring 1&2我把方法輸入字符串放在sql查詢中,並將該查詢的結果設置在變量「rs」中。 這是否意味着,如果我成功地執行該查詢,設置它通過,不打破一個程序,是否意味着我去下一行是在這種情況下rs.nextline,這是可以的程序和他會說:「好吧,你通過了這個查詢,我還活着,我會返回true,因爲一切都好」? – dowlabordere

+0

@dowlabordere執行查詢時,將其存儲到ResultSet中。如果您看看我答案中的鏈接,您會看到「ResultSet遊標最初位於第一行之前;第一次調用該方法會使第一行成爲當前行;第二次調用將使第二行當前行,等等。「這意味着通過調用'next',你告訴光標嘗試檢索第一個結果。如果沒有更多的結果,'next'將返回false。所以你的'login'方法基本上檢查你的查詢中至少有1個結果。 – Vikram