Mysql
 sql >> Base de données >  >> RDS >> Mysql

La connexion ne fonctionne que pour le dernier utilisateur de la base de données

Vous copiez l'intégralité de la table DB dans la mémoire de Java et effectuez la comparaison dans un while boucle sur tous les enregistrements. Vous n'abandonnez pas le while boucle lorsqu'il y a une correspondance avec un enregistrement, il continue donc à boucler sur les enregistrements restants et ainsi le pagename être remplacé par "start" à chaque fois.

Vous devez ajouter une break déclaration :

if (results.getString(2).equals(password) && results.getString(1).equals(username)) { 
    pagename="main";
    break;
}

Ou, mieux, laissez SQL faire le travail pour lequel il est conçu, en sélectionnant et en renvoyant exactement les données dont vous avez besoin :

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";
}

C'est plus efficace et sensé.