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

Как да открием празен ResultSet от MySQL?

Просто проверете дали ResultSet#next() връща true. Напр.

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

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

    return exist;
}

които можете да използвате по следния начин

if (userDAO.exist(username, password)) {
    // Proceed with login?
} else {
    // Show error?
}

Като алтернатива можете също така да му позволите да върне пълноценен User или null ако няма такъв. Напр.

public User find(String username, String password) throws SQLException {
    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet resultSet = null;
    User user = null;

    try {
        connection = database.getConnection();
        statement = connection.prepareStatement("SELECT id, username, email, dateOfBirth FROM user WHERE username = ? AND password = MD5(?)");
        statement.setString(1, username);
        statement.setString(2, password);
        resultSet = statement.executeQuery();

        if (resultSet.next()) {
            user = new User(
                resultSet.getLong("id"),
                resultSet.getString("username"),
                resultSet.getString("email"),
                resultSet.getDate("dateOfBirth"));
        }
    } finally {
        close(resultSet, statement, connection);
    }

    return user;
}

с

User user = userDAO.find(username, password);

if (user != null) {
    // Proceed with login?
} else {
    // Show error?
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Красноречив:Обаждане Къде на връзка

  2. Обединената таблица на mySql не може да актуализира колоните на петна

  3. SQL LIMIT връща 'нула' - 0 - редове (В PHP)

  4. Използване на процесора на RDS екземпляр

  5. PreparedStatement игнорира параметрите в заявката:java.sql.SQLException:Индекс на параметър извън обхвата (1> брой параметри, което е 0)