Вие копирате цялата DB таблица в паметта на Java и извършвате сравнението за while
обхождане на всички записи. Вие не прекъсвате while
цикъл, когато има съвпадение със запис, така че продължава да цикли над останалите записи и така pagename
се заменят с "старт" всеки път.
Трябва да добавите break
изявление:
if (results.getString(2).equals(password) && results.getString(1).equals(username)) {
pagename="main";
break;
}
Или, по-добре, оставете SQL да свърши работата, за която е създаден, избирайки и връщайки точно данните, от които се нуждаете:
preparedStatement = connection.prepareStatement("SELECT id FROM user WHERE username=? AND password=MD5(?)");
preparedStatement.setString(1, username);
preparedStatement.setString(2, password);
resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
pagename = "main";
}
else {
pagename = "start";
}
Това е по-ефективно и разумно.