Mysql
 sql >> база данни >  >> RDS >> Mysql

Входът работи само за последния потребител в базата данни

Вие копирате цялата DB таблица в паметта на Java и извършвате сравнението за while обхождане на всички записи. Вие не прекъсвате while цикъл, когато има съвпадение със запис, така че продължава да цикли над останалите записи и така pagename се заменят с "старт" всеки път.

Трябва да добавите break изявление:

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

Или, по-добре, оставете SQL да свърши работата, за която е създаден, избирайки и връщайки точно данните, от които се нуждаете:

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

Това е по-ефективно и разумно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите данни от mysql база данни

  2. От гледна точка на производителността, колко ефективно е използването на временна таблица на MySQL за силно използвана функция на уебсайт?

  3. Как да замените всички срещания на char с елементи от масив?

  4. MAMP mysql не стартира

  5. Присвояване на една и съща стойност на параметъра няколко пъти в изпълнение на pdo