Du kopierar hela DB-tabellen till Javas minne och gör jämförelsen på en while loop över alla poster. Du avbryter inte while loop när det finns en matchning med en post, så den fortsätter att loopa över de återstående posterna och så pagename blir åsidosatt med "start" varje gång.
Du måste lägga till en break uttalande:
if (results.getString(2).equals(password) && results.getString(1).equals(username)) {
pagename="main";
break;
}
Eller, bättre, låt SQL göra jobbet den är designad för, genom att välja och returnera exakt data du behöver:
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";
}
Det är mer effektivt och förnuftigt.