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é.