Вы просто забыли вызвать next()
на ResultSet res
, чтобы навести курсор ResultSet
на первую запись (если она есть).Если вы не вызываете метод next
, этот курсор будет указывать непосредственно перед первой записью результата, а затем res.getString(#)
ничего не вернет.
Просто сделайте это:
.
.
.
res = stmt.executeQuery();
while(res.next()){
psDB = res.getString(1).toString();
passDB = res.getString(2).toString();
}
.
.
.
Еще одна подсказка - вызов res.getString(#)
вернет значения типа String
, и нет необходимости снова вызывать .toString()
.Поэтому лучше изменить его следующим образом:
.
.
.
res = stmt.executeQuery();
while(res.next()){
psDB = res.getString(1);
passDB = res.getString(2);
}
.
.
.
И хорошей практикой является сделать результат вашего sql как можно более узким, чтобы в этом случае была только одна запись (проверка имени пользователя и пароля для входа в систему и т. Д.)..).Это означает только выбор пароля для имени пользователя, которое передается вашему checki
методу:
.
.
.
stmt = con.prepareStatement("select pseudo, mdp from recp where pseudo = ? ");
stmt.setString(1, pseudo);
res = stmt.executeQuery();
while(res.next()){
psDB = res.getString(1);
passDB = res.getString(2);
}
.
.
.
Если после этого у вас появятся другие ошибки, вы можете проверить, сколько записей у вас в таблице.и проверьте, есть ли запись, которую вы выбираете в своем коде, есть или нет.
После этого это может произойти из-за некоторого исключения в вашем коде, которое перехватывается предложением catch
, но не может сделатьсигнал, чтобы сообщить вам, так как вы ничего не делаете в пункте catch
.Измените свое предложение catch следующим образом, чтобы увидеть, возникает ли какое-либо исключение:
}catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}