sql >> Databáze >  >> RDS >> Mysql

Přihlášení funguje pouze pro posledního uživatele v databázi

Kopírujete celou tabulku DB do paměti Java a provádíte porovnání v while smyčka přes všechny záznamy. Nepřerušíte while smyčka, když je nalezena shoda se záznamem, takže pokračuje ve smyčce přes zbývající záznamy a tak pagename vždy přepište pomocí „start“.

Musíte přidat break prohlášení:

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

Nebo, lépe, nechat SQL dělat práci, pro kterou je navrženo, vybrat a vrátit přesně data, která potřebujete:

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 je efektivnější a rozumnější.



  1. Potřebuji funkci pro výběr 88 náhodných řádků z tabulky (bez duplikátů)

  2. Jak najdu řetězec v databázi SQL Serveru?

  3. Nevýhody citování celých čísel v dotazu Mysql?

  4. Nápověda Openfire. Vlastní databáze (tabulky, pole)