2016-04-13 12 views
1

私が作成したメソッドのブールチェックを作成する際に助けが必要です。私は基本的にEnumRankが指定されていればtrueを返しますが、動作していません。助言がありますか?JavaのResultSet

EDIT:両方の値がCLOBデータ・タイプは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; 
} 

答えて

0

は、クエリにランクを追加し、あなたはPreparedStatementを使用しています。 result.next()を使用してクエリが結果を返すかどうかを確認し、StatementResultSet(およびConnection)を閉じるためにfinallyブロックを使用する必要があります。そして、黙って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; 
}