Kopiujesz całą tabelę DB do pamięci Javy i dokonujesz porównania w while
pętla po wszystkich rekordach. Nie przerywasz while
pętla, gdy istnieje dopasowanie do rekordu, więc kontynuuje pętlę nad pozostałymi rekordami, a więc pagename
zostań zastąpiony przez "start" za każdym razem.
Musisz dodać break
oświadczenie:
if (results.getString(2).equals(password) && results.getString(1).equals(username)) {
pagename="main";
break;
}
Albo lepiej, pozwól SQL wykonać zadanie, do którego jest przeznaczony, wybierając i zwracając dokładnie potrzebne dane:
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";
}
To bardziej wydajne i rozsądne.