sql >> Database teknologi >  >> RDS >> Mysql

Login virker kun for sidste bruger i databasen

Du kopierer hele DB-tabellen ind i Javas hukommelse og laver sammenligningen om et while sløjfe over alle poster. Du afbryder ikke while sløjfe, når der er et match med en post, så den fortsætter med at sløjfe over de resterende poster og så pagename blive tilsidesat med "start" hver gang.

Du skal tilføje en break erklæring:

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

Eller bedre, lad SQL gøre det arbejde, det er designet til, ved at vælge og returnere præcis de data, du har brug for:

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

Det er mere effektivt og fornuftigt.



  1. Parameteriseret Oracle SQL-forespørgsel i Java?

  2. mySQL:redigere/gemme my.cnf fil

  3. MySQL geospacial søgning ved hjælp af haversine-formlen returnerer null på samme punkt

  4. Rækkeniveaulåsning i Mysql