Java中的ResultSet

时间:2016-04-13 05:28:49

标签: java mysql boolean resultset

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

编辑:两个值都存储在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;
}

1 个答案:

答案 0 :(得分:0)

将排名添加到查询中,并且您正在使用PreparedStatement,因此请使用绑定参数。您可以使用result.next()检查查询是否返回结果,并使用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;
}