Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O login funciona apenas para o último usuário no banco de dados


Você está copiando toda a tabela de banco de dados na memória do Java e fazendo a comparação em um while loop em todos os registros. Você não está abortando while loop quando há uma correspondência com um registro, então ele continua fazendo o loop sobre os registros restantes e, portanto, o pagename ser substituído por "start" sempre.

Você precisa adicionar um break declaração:
if (results.getString(2).equals(password) && results.getString(1).equals(username)) { 
    pagename="main";
    break;
}

Ou, melhor, deixe o SQL fazer o trabalho para o qual foi projetado, selecionando e retornando exatamente os dados que você precisa:
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";
}

Isso é mais eficiente e sensato.