2016-04-13 9 views
1

Ich brauche Hilfe beim Erstellen einer booleschen Überprüfung für eine von mir erstellte Methode. Ich möchte grundsätzlich, dass es true zurückgibt, wenn sie den angegebenen EnumRank haben, aber es funktioniert nicht. Irgendwelche Vorschläge?ResultSet in Java

EDIT: Beide Werte gespeichert sind, in VARCHAR

Code:

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; 
} 

Antwort

0

In den Rang auf die Abfrage, und Sie verwenden PreparedStatement so binden Parameter verwenden. Sie können result.next() verwenden, um zu überprüfen, ob die Abfrage ein Ergebnis zurückgibt, und Sie sollten den finally-Block verwenden, um Ihre Statement und ResultSet (und Connection) zu schließen. Und schluck nicht schweigend Exception (s). Etwas wie

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; 
}