sql >> Databasteknik >  >> RDS >> Mysql

Inloggning fungerar endast för den sista användaren i databasen

Du kopierar hela DB-tabellen till Javas minne och gör jämförelsen på en while loop över alla poster. Du avbryter inte while loop när det finns en matchning med en post, så den fortsätter att loopa över de återstående posterna och så pagename blir åsidosatt med "start" varje gång.

Du måste lägga till en break uttalande:

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

Eller, bättre, låt SQL göra jobbet den är designad för, genom att välja och returnera exakt data du behöver:

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 är mer effektivt och förnuftigt.



  1. Lås variabler i Script Task med C#

  2. Säkerhetskopiera MySQL-användare

  3. Hur man inaktiverar index i innodb

  4. Hur jämför jag två kolumner i SQL?