我需要帮助为我创建的方法创建 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 来关闭您的 Statement
和 ResultSet
(和 连接
)。并且不要默默地吞下 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/