Está copiando toda la tabla DB en la memoria de Java y haciendo la comparación en un while
bucle sobre todos los registros. No estás cancelando el while
bucle cuando hay una coincidencia con un registro, por lo que continúa recorriendo los registros restantes y por lo tanto el pagename
ser anulado con "inicio" cada vez.
Necesitas agregar un break
declaración:
if (results.getString(2).equals(password) && results.getString(1).equals(username)) {
pagename="main";
break;
}
O, mejor, deje que SQL haga el trabajo para el que está diseñado, seleccionando y devolviendo exactamente los datos que necesitas:
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";
}
Eso es más eficiente y sensato.