Java 中的结果集

ResultSet in Java

我需要帮助为我创建的方法创建布尔检查。如果它们具有指定的 EnumRank,我基本上希望它为 return 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,因此请使用绑定参数。您可以使用 result.next() 来检查查询 returns 是否是结果,并且您应该使用 finally 块来关闭您的 StatementResultSet(以及 Connection)。并且不要默默地吞下 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;
}