java - Java 中的结果集

标签 java mysql boolean resultset

我需要帮助为我创建的方法创建 boolean 检查。如果它们具有指定的 EnumRank,我基本上希望它返回 true,但它不起作用。有什么建议吗?

编辑:两个值都存储在 VARCHARS 中

代码:

    public boolean hasRank(Player player, EnumRanks rank){
    if (!MySql.checkConnection()){
        return false;
    }
    try{
        String query = "SELECT RANK FROM `user_ranks` WHERE UUID= '" + player.getUniqueId() + "';";
        PreparedStatement statement = MySql.getConnection().prepareStatement(query);
        ResultSet result = statement.executeQuery();
        result.next();
        return result.getBoolean(rank.getSQLName());
        //return true - So I can use this method
    }
    catch (SQLException e){
        //Nothing
    }
    return false;
}

最佳答案

将排名添加到查询中,并且您使用的是 PreparedStatement,因此请使用绑定(bind)参数。您可以使用 result.next() 检查查询是否返回结果,您应该使用 finally block 来关闭您的 StatementResultSet (和 连接)。并且不要默默地吞下 Exception(s)。有点像

public boolean hasRank(Player player, EnumRanks rank) {
    if (!MySql.checkConnection()) {
        return false;
    }
    Connection conn = null;
    PreparedStatement statement = null;
    ResultSet result = null;
    String query = "SELECT RANK FROM `user_ranks` WHERE UUID=? AND RANK=?";
    try {
        conn = MySql.getConnection();
        statement = conn.prepareStatement(query);
        statement.setString(1, player.getUniqueId());
        statement.setString(2, rank.getSQLName());
        result = statement.executeQuery();
        return result.next();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        if (result != null) {
            try {
                result.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    return false;
}

关于java - Java 中的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36589351/

相关文章:

mysql - Doctrine - SQL 查询生成器 - 更新和连接?

java - 如何在 Android 中再次设置 boolean 值 true ?

c - 在 C 中编写一个返回 boolean 值的函数

regex - 为什么在 Ruby 中 Regexp 对象被认为是 "falsy"?

Java游戏: Keeping framerate the same on all computers

php - Activerecord 代码点火器 3

php - 我应该怎么做才能使 mysql 100% 最优?

Java如何限制一行打印的字符数

java - 不使用 sudo 将文件从 HDFS 复制到本地系统

java - 在 python 中搜索项目列表的更好方法