Ich habe ein Problem mit meiner mysql setBanned-Anweisung. Ich versuche, einen Benutzer in die Datenbank gesperrt zu setzen, aber es wirft mir eine "Keine Operation ist nach dem Schließen der Verbindung erlaubt." Kann mir jemand helfen?Einfügen von MySQL Java
Es wirft einen Fehler auf dem
statement.setString(3, reason);
Im setBanned Code.
Aktuelle setBanned Code:
public boolean setBanned(Player player, boolean state, String reason){
Connection conn = null;
PreparedStatement statement = null;
String setBanned = "INSERT INTO `test_bans` (UUID, BANNED, REASON) VALUES (?, ?, ?)";
String setUnbanned = "UPDATE `test_bans` SET BANNED= ? WHERE UUID= ?";
try{
conn = MySql.getConnection();
if(isBanned(player) && state == false){
statement = conn.prepareStatement(setUnbanned);
statement.setBoolean(1, state);
statement.setString(2, player.getUniqueId().toString());
statement.executeUpdate();
} else {
statement = conn.prepareStatement(setBanned);
statement.setString(1, player.getUniqueId().toString());
statement.setBoolean(2, state);
statement.setString(3, reason);
statement.executeUpdate();
}
} catch (SQLException e){
e.printStackTrace();
} finally {
if(statement != null){
try{
statement.close();
} catch (SQLException e){
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e){
e.printStackTrace();
}
}
}
return false;
}
isBanned Code:
public boolean isBanned(Player player){
Connection conn = null;
PreparedStatement statement = null;
ResultSet result = null;
String query = "SELECT BANNED FROM `test_bans` WHERE UUID= ?";
try{
conn = MySql.getConnection();
statement = conn.prepareStatement(query);
statement.setString(1, player.getUniqueId().toString());
result = statement.executeQuery();
return result.next();
} catch (SQLException e){
e.printStackTrace();
} finally {
if (result != null){
try{
result.close();
} catch (SQLException e){
e.printStackTrace();
}
}
if(statement != null){
try{
statement.close();
} catch (SQLException e){
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e){
e.printStackTrace();
}
}
}
return false;
}
EDIT: MySQL Klasse
public class MySql {
private static String DATABASE_NAME ="testing_database";
private static String DATABASE_IP ="localhost:3306";
private static String connection ="jdbc:mysql://"+DATABASE_IP+"/"+DATABASE_NAME;
private static String username ="root";
private static String password ="pass";
private static Connection conn;
public static void handleConnection(){
Bukkit.getServer().getLogger().info("Establishing connection to MySQL Database....");
try{
conn = DriverManager.getConnection(connection, username, password);
if(!conn.isClosed()){
Bukkit.getServer().getLogger().info("Successfully synced with MySQL!");
return;
}
return;
}
catch (SQLException e){
e.printStackTrace();
return;
}
}
public static void disconnectConnection(){
Bukkit.getServer().getLogger().info("Disconnecting from MySQL Databse....");
try{
conn.close();
if(conn.isClosed()){
Bukkit.getServer().getLogger().info("Successfully Disconnected");
}
return;
}
catch(SQLException e){
e.printStackTrace();
return;
}
}
public static boolean setupTables(){
try{
System.out.println("Checking Tables");
conn.prepareStatement("CREATE TABLE IF NOT EXISTS test_ranks (UUID VARCHAR(255), RANK VARCHAR(25));").executeUpdate();
conn.prepareStatement("CREATE TABLE IF NOT EXISTS test_bans (UUID VARCHAR(255), BANNED BOOLEAN, REASON TEXT);").executeUpdate();
return true;
}
catch(SQLException e){
e.printStackTrace();
return false;
}
}
public static boolean checkConnection(){
try{
if((conn != null) && (!conn.isClosed())){
return true;
}
return false;
}
catch(SQLException e){
e.printStackTrace();
return false;
}
}
public static Connection getConnection(){
try {
if(conn.isClosed()){
connectMySQL();
return conn;
}
if(conn == null){
connectMySQL();
return conn;
}
} catch (SQLException e){
e.printStackTrace();
}
return conn;
}
public static void connectMySQL(){
try {
conn = DriverManager.getConnection(connection, username, password);
return;
} catch(SQLException e){
e.printStackTrace();
}
}
}
hinzufügen zu bekommen Ist Ihr 'Verbindung conn' immer null? Wo ist die URL? – bmarkham
@bmarkham Es ist eine benutzerdefinierte Klasse. –