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

JDBC винаги тества последния ред на MySQL таблицата?

Защото теглиш всито таблица на база данни надолу в паметта на Java и тестване всеки ред в цикъл while. Не прекъсвате цикъла, ако бъде намерено съвпадение, така че да продължи да презаписва булевия резултат до последния ред.

Това каза, че наистина не искате да правите сравнението в Java. Просто използвайте SQL WHERE клауза . Това е много по-ефективен и наистина задачата, която DB трябва да изпълнява. Не се опитвайте да поемете работата на DB в Java, това само ще бъде неефективно.

public boolean exists(String username, String password) throws SQLException {
    Connection connection = null;
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;
    boolean exists = false;

    try {
        connection = database.getConnection();
        preparedStatement = connection.prepareStatement("SELECT id FROM client WHERE username = ? AND password = ?");
        preparedStatement.setString(1, username);
        preparedStatement.setString(2, password);
        resultSet = preparedStatement.executeQuery();
        exists = resultSet.next();
    } finally {
        close(resultSet);
        close(preparedStatement);
        close(connection);
    }

    return exists;
}

Виждате, че направих няколко подобрения:

  1. Използвайте подготвен израз.
  2. Не използвайте equalsignorecase. Паролата за „FooBar“ НЕ трябва да бъде същата като „foobar“.
  3. Внимателно придобивайте и затваряйте ресурси в същия обхват, за да избегнете изтичане.
  4. Имайте го в независим и повторно използваем нестатичен DAO метод.

За да научите повече за правилното използване на JDBC, можете да намерите това основен урок полезно.



  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. Изберете колона с име на ключова дума

  3. MySQL сървър на MAMP-Windows няма да стартира

  4. MySQL - стойност по подразбиране за TIMESTAMP(3)

  5. MySQL изтрива дублиращи се записи, но запазва най-новите