Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die Anmeldung funktioniert nur für den letzten Benutzer in der Datenbank

Sie kopieren die gesamte DB-Tabelle in den Speicher von Java und führen den Vergleich in einem while durch Loop über alle Datensätze. Sie brechen while nicht ab Schleife, wenn es eine Übereinstimmung mit einem Datensatz gibt, also fährt es fort, die verbleibenden Datensätze und damit den pagename zu durchlaufen jedesmal mit "start" überschrieben werden.

Sie müssen einen break hinzufügen Aussage:

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

Oder, besser gesagt, lassen Sie SQL die Aufgabe erledigen, für die es entwickelt wurde, indem es genau auswählt und zurückgibt die Daten, die Sie benötigen:

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

Das ist effizienter und sinnvoller.