U kopieert de hele DB-tabel naar het geheugen van Java en doet de vergelijking in een while
loop over alle records. U breekt de while
niet af loop wanneer er een overeenkomst is met een record, dus het blijft over de resterende records lopen en dus de pagename
wordt elke keer overschreven met "start".
U moet een break
toevoegen verklaring:
if (results.getString(2).equals(password) && results.getString(1).equals(username)) {
pagename="main";
break;
}
Of, beter nog, laat SQL het werk doen waarvoor het is ontworpen, door precies te selecteren en terug te geven de gegevens die je nodig hebt:
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";
}
Dat is efficiënter en verstandiger.