Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Logowanie działa tylko dla ostatniego użytkownika w bazie danych

Kopiujesz całą tabelę DB do pamięci Javy i dokonujesz porównania w while pętla po wszystkich rekordach. Nie przerywasz while pętla, gdy istnieje dopasowanie do rekordu, więc kontynuuje pętlę nad pozostałymi rekordami, a więc pagename zostań zastąpiony przez "start" za każdym razem.

Musisz dodać break oświadczenie:

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

Albo lepiej, pozwól SQL wykonać zadanie, do którego jest przeznaczony, wybierając i zwracając dokładnie potrzebne dane:

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

To bardziej wydajne i rozsądne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buforowanie w JDBC

  2. Wysyłaj dane z Androida na serwer przez JSON

  3. Zainstaluj luaSQL na Ubuntu

  4. Jak skonfigurować hibernate.cfg.xml do applicationContext.xml jako dataSource?

  5. Jak używać DELETE ON CASCADE w relacji wiele do jednego?