2016-12-02 2 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])) 

Почему результат «если» утверждение истинным или ложным. Я знаю, что это правда или ложно, но я не могу понять, почему. Мне не хватает информации о мозге. Может кто-то пожевал его для меня шаг за шагом? Спасибо!

+2

Поскольку 'login()' возвращает 'boolean'. – Gendarme

ответ

0

Ваш метод login возвращает boolean, что может быть истинным или ложным. Посмотрите на последнюю строку этого метода:

return rs.next(); 

Обратите внимание, как вы возвращающие результирующее значение вызова next() на rs? Из вашего кода rs является ResultSet. Вы можете посмотреть на java api docs можно Чтобы найти, что next() возвращает

верно, если новая текущая строка является действительным; false, если строк больше нет

+0

Да, но я не могу понять, почему это правда или ложь. С st.setstring 1 и 2 я помещаю входные строки метода в sql-запрос и задаю результат этого запроса в переменной «rs». Означает ли это, что если мне удастся выполнить этот запрос, чтобы его передать, чтобы не сломать программу, значит ли это, что я перехожу к следующей строке, которая находится в этой ситуации rs.nextline, и это нормально для программы, и он скажет: «Хорошо, вы прошли с этим запросом, я все еще жив, и я вернусь, потому что все в порядке»? – dowlabordere

+0

@dowlabordere Когда вы выполняете свой запрос, вы храните его в ResultSet. Если вы посмотрите на ссылку из моего ответа, вы увидите: «Курсор ResultSet изначально расположен до первой строки, первый вызов метода следующий делает первую строку текущей строкой, второй вызов делает вторую строку текущий ряд и т. д. ". Это означает, что, вызывая 'next', вы говорите курсору, чтобы попытаться получить первый результат. Если результатов больше нет, 'next' вернет false. Таким образом, ваш метод 'login' по существу проверяет, что по вашему запросу есть хотя бы 1 результат. – Vikram

Смежные вопросы