sql >> Base de Datos >  >> RDS >> Mysql

El inicio de sesión funciona solo para el último usuario en la base de datos

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.