【问题标题】:How to detect empty ResultSet from MySQL?如何从 MySQL 中检测空的 ResultSet?
【发布时间】:2011-08-25 20:11:53
【问题描述】:

如果没有可能的结果,如何检测从 MySQL 发送的空结果集。

【问题讨论】:

    标签: java mysql jdbc


    【解决方案1】:

    只需检查 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?
    }
    

    【讨论】:

    • 不客气。我希望您也收到了有关如何正确使用 JDBC 的提示。
    猜你喜欢
    • 2012-06-27
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多