How to detect empty ResultSet from MySQL?

前端 未结 1 1329
借酒劲吻你
借酒劲吻你 2020-12-21 05:15

How can I detect the empty result set sending from MySQL if there is no possible result.

1条回答
  •  一生所求
    2020-12-21 05:43

    Just check if ResultSet#next() returns true. E.g.

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

    which you can use like follows

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

    Alternatively, you could also let it return a fullworhy User or null if there's none. E.g.

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

    with

    User user = userDAO.find(username, password);
    
    if (user != null) {
        // Proceed with login?
    } else {
        // Show error?
    }
    

    0 讨论(0)
提交回复
热议问题