ServerPlugin SQL Stats für FFA

Dieses Thema im Forum "Programmierung" wurde erstellt von ZockerBoysHD, 4. September 2016.

  1. ZockerBoysHD
    Offline

    ZockerBoysHD

    Registriert seit:
    15. August 2014
    Beiträge:
    44
    Minecraft:
    ZockerBoysHD
    Hallo.
    Ich woltle heute meine statistiken auf einer MySQL speichern lassen.
    Das Problem ist abber:

    Der server gibt immer inenen error aus, wenn man joint (wegen scoreboard) und und und
    Error Report:
    Code (Text):
    1. nual that corresponds to your MySQL server version for the right syntax to use near ''8627a6cd-6991-3145-85b8-b58d2cc6e805'' at line 1
    2. [11:59:08 ERROR]: Could not pass event PlayerJoinEvent to KillTimePvP-FFA-System vBETA 0.1
    3. org.bukkit.event.EventException
    4.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:305) ~[server.jar:git-Spigot-4b89e7b-7d0f836]
    5.         at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[server.jar:git-Spigot-4b89e7b-7d0f836]
    6.         at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [server.jar:git-Spigot-4b89e7b-7d0f836]
    7.         at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [server.jar:git-Spigot-4b89e7b-7d0f836]
    8.         at net.minecraft.server.v1_8_R2.PlayerList.onPlayerJoin(PlayerList.java:296) [server.jar:git-Spigot-4b89e7b-7d0f836]
    9.         at net.minecraft.server.v1_8_R2.PlayerList.a(PlayerList.java:156) [server.jar:git-Spigot-4b89e7b-7d0f836]
    10.         at net.minecraft.server.v1_8_R2.LoginListener.b(LoginListener.java:144) [server.jar:git-Spigot-4b89e7b-7d0f836]
    11.         at net.minecraft.server.v1_8_R2.LoginListener.c(LoginListener.java:54) [server.jar:git-Spigot-4b89e7b-7d0f836]
    12.         at net.minecraft.server.v1_8_R2.NetworkManager.a(NetworkManager.java:231) [server.jar:git-Spigot-4b89e7b-7d0f836]
    13.         at net.minecraft.server.v1_8_R2.ServerConnection.c(ServerConnection.java:148) [server.jar:git-Spigot-4b89e7b-7d0f836]
    14.         at net.minecraft.server.v1_8_R2.MinecraftServer.A(MinecraftServer.java:809) [server.jar:git-Spigot-4b89e7b-7d0f836]
    15.         at net.minecraft.server.v1_8_R2.DedicatedServer.A(DedicatedServer.java:368) [server.jar:git-Spigot-4b89e7b-7d0f836]
    16.         at net.minecraft.server.v1_8_R2.MinecraftServer.z(MinecraftServer.java:651) [server.jar:git-Spigot-4b89e7b-7d0f836]
    17.         at net.minecraft.server.v1_8_R2.MinecraftServer.run(MinecraftServer.java:554) [server.jar:git-Spigot-4b89e7b-7d0f836]
    18.         at java.lang.Thread.run(Thread.java:745) [?:1.8.0_101]
    19. Caused by: java.lang.NullPointerException
    20.         at de.ktpvp.de.FFA.mysql.Stats.pExists(Stats.java:21) ~[?:?]
    21.         at de.ktpvp.de.FFA.mysql.Stats.gettode(Stats.java:97) ~[?:?]
    22.         at de.ktpvp.de.FFA.system.Scoreboard.setboard(Scoreboard.java:26) ~[?:?]
    23.         at de.ktpvp.de.FFA.Events.joinleavemsgs.PlayerJoinMessage(joinleavemsgs.java:27) ~[?:?]
    24.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
    25.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_101]
    26.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_101]
    27.         at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_101]
    28.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) ~[server.jar:git-Spigot-4b89e7b-7d0f836]
    29.         ... 14 more
    30.  
    Die MYSQL verbidungs klasse:
    Code (Javascript):
    1. package de.ktpvp.de.FFA.mysql;
    2.  
    3. import java.sql.Connection;
    4. import java.sql.DriverManager;
    5. import java.sql.ResultSet;
    6. import java.sql.SQLException;
    7. import java.sql.Statement;
    8. import org.bukkit.event.Listener;
    9. public class MYSQL implements Listener{    
    10.         private String HOST = "";
    11.         private String DATABASE = "";
    12.         private String USER = "";
    13.         private String PASSWORD = "";
    14.      
    15.         private Connection con;
    16.      
    17.         public MYSQL(String host, String database, String user, String password) {
    18.                 this.HOST = host;
    19.                 this.DATABASE = database;
    20.                 this.USER = user;
    21.                 this.PASSWORD = password;
    22.              
    23.                 connect();
    24.         }
    25.         public void connect() {
    26.                 try {
    27.                         con = DriverManager.getConnection("jdbc:mysql://" + HOST + ":3306/" + DATABASE + "?autoReconnect=true", USER, PASSWORD);
    28.                         System.out.println("[MySQL] Die Verbindung zur MySQL wurde hergestellt!");
    29.                 } catch (SQLException e) {
    30.                         System.out.println("[MySQL] Die Verbindung zur MySQL ist fehlgeschlagen! Fehler: " + e.getMessage());
    31.                 }
    32.         }
    33.      
    34.         public void close() {
    35.                 try {
    36.                         if(con != null) {
    37.                                 con.close();
    38.                                 System.out.println("[MySQL] Die Verbindung zur MySQL wurde Erfolgreich beendet!");
    39.                         }
    40.                 } catch (SQLException e) {
    41.                         System.out.println("[MySQL] Fehler beim beenden der Verbindung zur MySQL! Fehler: " + e.getMessage());
    42.                 }
    43.         }
    44.      
    45.         public void update(String qry) {
    46.                 try {
    47.                         Statement st = con.createStatement();
    48.                         st.executeUpdate(qry);
    49.                         st.close();
    50.                 } catch (SQLException e) {
    51.                         connect();
    52.                         System.err.println(e);
    53.                 }
    54.         }
    55.      
    56.         public ResultSet query(String qry) {
    57.                 ResultSet rs = null;
    58.              
    59.                 try {
    60.                         Statement st = con.createStatement();
    61.                         rs = st.executeQuery(qry);
    62.                 } catch (SQLException e) {
    63.                         connect();
    64.                         System.err.println(e);
    65.                 }
    66.                 return rs;
    67.         }
    68. }
    69.  
    Die Main Klasse:
    Code (Javascript):
    1. package de.ktpvp.de.FFA.system;
    2. import java.io.File;
    3. import java.io.IOException;
    4. import java.util.ArrayList;
    5. import java.util.Arrays;
    6. import java.util.HashMap;
    7. import java.util.List;
    8. import org.bukkit.Bukkit;
    9. import org.bukkit.World;
    10. import org.bukkit.configuration.file.FileConfiguration;
    11. import org.bukkit.configuration.file.YamlConfiguration;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.event.Listener;
    14. import org.bukkit.inventory.Inventory;
    15. import org.bukkit.plugin.PluginManager;
    16. import org.bukkit.plugin.java.JavaPlugin;
    17. import org.bukkit.scheduler.BukkitTask;
    18. import org.bukkit.scoreboard.Scoreboard;
    19. import de.ktpvp.de.FFA.CMDS.GREIFERALERT;
    20. import de.ktpvp.de.FFA.CMDS.bau;
    21. import de.ktpvp.de.FFA.CMDS.clear;
    22. import de.ktpvp.de.FFA.CMDS.fix;
    23. import de.ktpvp.de.FFA.CMDS.help;
    24. import de.ktpvp.de.FFA.CMDS.kit;
    25. import de.ktpvp.de.FFA.CMDS.map;
    26. import de.ktpvp.de.FFA.CMDS.setspawn;
    27. import de.ktpvp.de.FFA.CMDS.shop;
    28. import de.ktpvp.de.FFA.CMDS.spawn;
    29. import de.ktpvp.de.FFA.CMDS.wasistdas;
    30. import de.ktpvp.de.FFA.Events.AntiREgenuNacht;
    31. import de.ktpvp.de.FFA.Events.Event_Tab_ALT;
    32. import de.ktpvp.de.FFA.Events.FSigns;
    33. import de.ktpvp.de.FFA.Events.Tod;
    34. import de.ktpvp.de.FFA.Events.VIPJoin;
    35. import de.ktpvp.de.FFA.Events.anticmd;
    36. import de.ktpvp.de.FFA.Events.aps;
    37. import de.ktpvp.de.FFA.Events.chat;
    38. import de.ktpvp.de.FFA.Events.joinleavemsgs;
    39. import de.ktpvp.de.FFA.Inventare.Confirmen;
    40. import de.ktpvp.de.FFA.Inventare.Maps;
    41. import de.ktpvp.de.FFA.Inventare.kitauswahl;
    42. import de.ktpvp.de.FFA.mysql.MYSQL;
    43. import de.ktpvp.de.FFA.mysql.Stats;
    44.  
    45. public class KilltimeMain extends JavaPlugin implements Listener {
    46.  
    47.     public static KilltimeMain ffa;
    48.    
    49.     public static MYSQL mysql;
    50.  
    51.     static File CFGFile = new File("plugins/FFA", "Player.yml");
    52.     public static FileConfiguration CFG = YamlConfiguration.loadConfiguration(CFGFile);
    53.  
    54.     static File SPAWNF = new File("plugins/FFA", "Spawn.yml");
    55.     public static FileConfiguration SPAWN = YamlConfiguration.loadConfiguration(SPAWNF);
    56.  
    57.     public static HashMap<String, BukkitTask> tp = new HashMap<String, BukkitTask>();
    58.    
    59.     public static ArrayList<Player> kit = new ArrayList<Player>();
    60.  
    61.     static Scoreboard sb;
    62.  
    63.     public static int suche = 0;
    64.  
    65.     public static int griefer = 0;
    66.    
    67.     public static final String prwichtig = "§eSystem §7»§7 ";
    68.     public static final String prausrufe = "§eSystem §7»§7 ";
    69.     public static final String prfrage = "§eSystem §7»§7 ";
    70.     public static final String prplus = "§eSystem §7»§7 ";
    71.  
    72.     public Inventory shop = null;
    73.  
    74.     @Override
    75.     public void onDisable() {
    76.         System.out.println("[SYSTEM]System Gestoppt");
    77.     }
    78.  
    79.     @Override
    80.     public void onEnable() {
    81.         ffa = this;
    82.         sb = Bukkit.getScoreboardManager().getNewScoreboard();
    83.  
    84.         sb.registerNewTeam("00000Admin");
    85.         sb.registerNewTeam("00001Dev");
    86.         sb.registerNewTeam("00002Mod");
    87.         sb.registerNewTeam("00003Sup");
    88.         sb.registerNewTeam("00004Builder");
    89.         sb.registerNewTeam("00005Youtuber");
    90.         sb.registerNewTeam("00006VIP");
    91.         sb.registerNewTeam("00007Spieler");
    92.  
    93.         sb.getTeam("00000Admin").setPrefix("§cAdmin §7| §c");
    94.         sb.getTeam("00001Dev").setPrefix("§bDev §7| §b");
    95.         sb.getTeam("00002Mod").setPrefix("§9Mod §7| §9");
    96.         sb.getTeam("00003Sup").setPrefix("§dSup §7| §d");
    97.         sb.getTeam("00004Builder").setPrefix("§aBuilder §7| §a");
    98.         sb.getTeam("00005Youtuber").setPrefix("§5");
    99.         sb.getTeam("00006VIP").setPrefix("§6");
    100.         sb.getTeam("00007Spieler").setPrefix("§7");
    101.  
    102.         ConnectMYSQL();
    103.  
    104.         createConfig();
    105.         loadList();
    106.  
    107.         createSConfig();
    108.         loadSList();
    109.  
    110.         loadServer();
    111.  
    112.         Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
    113.         System.out.println("[SYSTEM]System Geladen");
    114.  
    115.         List<World> world = getServer().getWorlds();
    116.         for (int i = 0; i < world.size(); i++) {
    117.             world.get(i).setStorm(false);
    118.             world.get(i).setThundering(false);
    119.         }
    120.         Bukkit.getServer().getWorld("i").setGameRuleValue("doDaylightCycle", "false");
    121.         Bukkit.getServer().getWorld("i").setTime(6000L);
    122.     }
    123.     public void loadServer() {
    124.         PluginManager pm = Bukkit.getPluginManager();
    125.  
    126.         pm.registerEvents(new Methoden(), this);
    127.         pm.registerEvents(new de.ktpvp.de.FFA.system.Scoreboard(), this);
    128.         pm.registerEvents(new CoinSystem(), this);
    129.  
    130.         pm.registerEvents(new kitauswahl(), this);
    131.         pm.registerEvents(new Maps(), this);
    132.         pm.registerEvents(new Confirmen(), this);
    133.  
    134.         pm.registerEvents(new AntiREgenuNacht(), this);
    135.         pm.registerEvents(new aps(), this);
    136.         pm.registerEvents(new chat(), this);
    137.         pm.registerEvents(new joinleavemsgs(), this);
    138.         pm.registerEvents(new Tod(), this);
    139.         pm.registerEvents(new VIPJoin(), this);
    140.         pm.registerEvents(new Event_Tab_ALT(), this);
    141.         pm.registerEvents(new FSigns(), this);
    142.         pm.registerEvents(new spawn(this), this);
    143.         pm.registerEvents(new anticmd(), this);
    144.         pm.registerEvents(new GREIFERALERT(), this);
    145.        
    146.         pm.registerEvents(new Stats(), this);
    147.        
    148.         getCommand("bau").setExecutor(new bau());
    149.         getCommand("kit").setExecutor(new kit());
    150.         getCommand("map").setExecutor(new map());
    151.         getCommand("wid").setExecutor(new wasistdas());
    152.         getCommand("fix").setExecutor(new fix());
    153.         getCommand("coins").setExecutor(new CoinSystem());
    154.         getCommand("kits").setExecutor(new kit());
    155.         getCommand("shop").setExecutor(new shop(this));
    156.         getCommand("stats").setExecutor(new Statsbefehl());
    157.         getCommand("spawn").setExecutor(new spawn(this));
    158.         getCommand("setspawn").setExecutor(new setspawn());
    159.         getCommand("help").setExecutor(new help());
    160.         getCommand("hilfe").setExecutor(new help());
    161.         getCommand("clear").setExecutor(new clear());
    162.         getCommand("griefer").setExecutor(new GREIFERALERT());
    163.     }
    164.     public static KilltimeMain getInstance() {
    165.         return ffa;
    166.     }
    167.     public static void saveList() {
    168.         try {
    169.             CFG.save(CFGFile);
    170.         } catch (IOException e) {
    171.             e.printStackTrace();
    172.         }
    173.     }
    174.     public static void loadList() {
    175.         try {
    176.             CFG.load(CFGFile);
    177.         } catch (Exception e) {
    178.             e.printStackTrace();
    179.         }
    180.     }
    181.     public static void createConfig() {
    182.  
    183.         if (!CFG.contains("Spieler")) {
    184.  
    185.             CFG.set("Spieler", Arrays.asList());
    186.             saveList();
    187.         }
    188.     }
    189.     public static void saveSList() {
    190.         try {
    191.             SPAWN.save(SPAWNF);
    192.         } catch (IOException e) {
    193.             e.printStackTrace();
    194.         }
    195.     }
    196.     public static void loadSList() {
    197.         try {
    198.             SPAWN.load(SPAWNF);
    199.         } catch (Exception e) {
    200.             e.printStackTrace();
    201.         }
    202.     }
    203.     public static void createSConfig() {
    204.  
    205.         if (!SPAWN.contains("Spawn")) {
    206.  
    207.             CFG.set("Spawn", "");
    208.             saveSList();
    209.         }
    210.     }
    211.    
    212.     private void ConnectMYSQL(){
    213.        
    214.         mysql = new MYSQL("localhost", "FFA", "FFA", "FFA");
    215.         mysql.update("CREATE TABLE IF NOT EXISTS (UUID varchart(64), KILLS int, DEATHS int,COINS int)");
    216.        
    217.     }
    218. }
    Und die Stats Klasse (für die ganzen sachen zum abrufen)
    Code (Javascript):
    1. package de.ktpvp.de.FFA.mysql;
    2. import java.sql.ResultSet;
    3. import java.sql.SQLException;
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.event.Listener;
    6. import de.ktpvp.de.FFA.system.KilltimeMain;
    7. public class Stats implements Listener {
    8.    
    9.     public static boolean pExists(String uuid){
    10.        
    11.         boolean exists = false;
    12.         try {
    13.            
    14.             ResultSet rs = KilltimeMain.mysql.query("SELECT * FROM Stats WHERE UUID '"+ uuid +"'");
    15.    
    16.             if(rs.getString("UUID") == uuid ){
    17.                 exists = true;
    18.                 return exists;
    19.             }else{
    20.                 exists = false;
    21.                 CreateP(uuid);
    22.             }
    23.    
    24.         } catch (SQLException e) {
    25.             e.printStackTrace();
    26.         }
    27.         return false;
    28.     }
    29. public static void CreateP(String uuid){
    30.    
    31.     if(pExists(uuid) == false){
    32.         KilltimeMain.mysql.update("INSERT INTO Stats(UUID, KILLS, DEATHS, COINS) VALUES('"+uuid+"','0', '0', '0');");
    33.     }  
    34. }
    35. public static Integer getkills(String uuid){
    36.     int kill = 0;
    37.     if(pExists(uuid) ==  true){  
    38.         try {  
    39.             ResultSet rs = KilltimeMain.mysql.query("SELECT * FROM Stats WHERE UUID '"+ uuid +"'");
    40.            
    41.             if(!rs.next() || (Integer.valueOf(rs.getInt("KILLS")) == null));    
    42.             kill = rs.getInt("KILLS");      
    43.         } catch (SQLException e) {
    44.             e.printStackTrace();
    45.         }
    46.     }else{
    47.         CreateP(uuid);
    48.         getkills(uuid);
    49.     }  
    50.     return kill;
    51. }
    52. public  static Integer getCoins(String uuid){
    53.    
    54.     int coins = 0;
    55.    
    56.     if(pExists(uuid) == true ){  
    57.         try {  
    58.             ResultSet rs = KilltimeMain.mysql.query("SELECT * FROM Stats WHERE UUID '"+ uuid +"'");
    59.            
    60.             if(!rs.next() || (Integer.valueOf(rs.getInt("COINS")) == null));
    61.            
    62.             coins = rs.getInt("COINS");      
    63.         } catch (SQLException e) {
    64.             e.printStackTrace();
    65.         }
    66.     }else{
    67.         CreateP(uuid);
    68.         getCoins(uuid);
    69.     }  
    70.     return coins;
    71. }
    72. public  static Integer gettode(String uuid, Player p){
    73.    
    74.     int tode = 0;
    75.    
    76.     if(pExists(p.getUniqueId().toString()) == true){  
    77.         try {  
    78.             ResultSet rs = KilltimeMain.mysql.query("SELECT * FROM Stats WHERE UUID '"+ uuid +"'");
    79.             tode = rs.getInt("DEATHS");      
    80.            
    81.         } catch (SQLException e) {
    82.             e.printStackTrace();
    83.         }
    84.     }else{
    85.         CreateP(uuid);
    86.         getCoins(uuid);
    87.     }  
    88.     return tode;
    89. }
    90. public static void setkills(String uuid, Integer kills){
    91.     if(pExists(uuid) == true){
    92.         KilltimeMain.mysql.update("UPDATE Stats SET KILLS= '"+ kills+"' WHERE UUID= '"+uuid+"';");
    93.        
    94.     }else{
    95.         CreateP(uuid);
    96.         setkills(uuid, kills);
    97.     }
    98. }
    99.     public static void setDEATHS(String uuid, Integer DEATHS){
    100.         if(pExists(uuid) == true){
    101.             KilltimeMain.mysql.update("UPDATE Stats SET DEATHS= '"+ DEATHS+"' WHERE UUID= '"+uuid+"';");
    102.            
    103.         }else{
    104.             CreateP(uuid);
    105.             setDEATHS(uuid, DEATHS);
    106.         }
    107.     }
    108.         public static void setCoins(String uuid, Integer coins){
    109.             if(pExists(uuid) == true){
    110.                 KilltimeMain.mysql.update("UPDATE Stats SET COINS= '"+ coins+"' WHERE UUID= '"+uuid+"';");
    111.                
    112.             }else{
    113.                 CreateP(uuid);
    114.                 setCoins(uuid, coins);
    115.             }
    116.         }
    117.         public static void addDEATHSs(String uuid, Integer deaths, Player p){
    118.             if(pExists(uuid)){
    119.                 setDEATHS(uuid, Integer.valueOf(gettode(uuid, p).intValue() + deaths.intValue()));
    120.                
    121.             }else{
    122.                 CreateP(uuid);
    123.                 addDEATHSs(uuid, deaths, p);
    124.             }
    125.         }
    126.        
    127.             public static void addkills(String uuid, Integer kills){
    128.                 if(pExists(uuid)){
    129.                     setkills(uuid, Integer.valueOf(getkills(uuid).intValue() + kills.intValue()));
    130.                    
    131.                 }else{
    132.                     CreateP(uuid);
    133.                     addkills(uuid, kills);
    134.                 }
    135.             }
    136.          
    137.                 public static void addcoins(String uuid, Integer coins){
    138.                     if(pExists(uuid)){
    139.                         setCoins(uuid, Integer.valueOf(getCoins(uuid).intValue() + coins.intValue()));
    140.                        
    141.                     }else{
    142.                         CreateP(uuid);
    143.                         addcoins(uuid, coins);
    144. }
    145. }
    146.  
    147. }
    148.  

    Schonmal Danke im vorraus!!!!
     
    #1
  2. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    41
    Entweder formatiert das Forum den Quellcode etwas anders oder der Code passt nicht zur gegebenen Fehlermeldung:

    Ergibt nach deinem Quellcode
    und
    ergibt
    Zum Problem:
    Ein Objekt, mit du arbeitest, existiert nicht, deshalb die NullPointerException. Da kann ne simple Null-Abfrage helfen, vlt musst du aber auch an anderer Stelle was ändern, kann das mit deinen Angaben nicht sagen.
     
    #2
  3. ZockerBoysHD
    Offline

    ZockerBoysHD

    Registriert seit:
    15. August 2014
    Beiträge:
    44
    Minecraft:
    ZockerBoysHD
    Abebr wie mache ich denn dan das objekt richtigg? habe in den jeweiligen klassen, qo da was passieren soll, dann gemacht z.b. im join event: e.getplayer().getUniqueID().tostring() oder was braucht man denn noch für angaben?
     
    #3
  4. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    41
    Mit den Angaben meine ich folgendes:
    In der Fehlermeldung stehen nach dem Caused by: java.lang.NullPointerException alle Klassen, die was mit dem Fehler zu tun haben, folglich kann aus der ersten Zeile (at de.ktpvp.de.FFA.mysql.Stats.pExists(Stats.java:21) ~[?:?]) entnommen werde, wo der Fehle genau auftritt. Bei der Fehlermeldung die du angegeben hast ist das Zeile 21 aus der Klasse Stats, in der Methode pExists. Schaue ich mir nun aber den gegebenen Quellcode an finde ich CreateP(uuid); , da dort aber keine NullpointerException auftreten kann passt die Fehlermeldung nicht zu dem Quellcode.

    Ich bitte dich also deinen aktuellen Quellcode zu kompilieren, auszuführen und der Fehler der dann geworfen wird zusammen mit dem Quellcode, am besten die Klassen Stats, Scoreboard und Events, hier zu posten, vorher kann ich dir da nicht weiterhelfen.

    PS: Bitte gewöhne dir an deinen Quellcode anständig zu formatieren, dann ist das Lesen auch etwas angenehmer.
     
    #4
  5. ZockerBoysHD
    Offline

    ZockerBoysHD

    Registriert seit:
    15. August 2014
    Beiträge:
    44
    Minecraft:
    ZockerBoysHD
    Also:
    Meine Klassen, Die Etwas mit der MYSQL zu tun Haben:

    MYSQL-Verbindugs Klasse: http://pastebin.com/KnJhruka
    Die Main-Klasse : http://pastebin.com/25E73s6P

    die Scoreboard Klasse: http://pastebin.com/umSDLTCP Übrigens: Die alten methoden da waren von früpher, als noch alels lokal war :D
    Die Join Event Klasse: http://pastebin.com/k7x0rEv3
    Die Stats klasse vom MYSQL: http://pastebin.com/eQYQePC6

    Komplette Server-LOG: http://pastebin.com/aEJV6EiM

    PS: Laut Dem Server-LOG was ich so gresehen habe, sagt der, Dass da irgendwo bei

    Code (Text):
    1.         KilltimeMain.mysql.update("INSERT INTO Stats(UUID, KILLS, DEATHS, COINS) VALUES("+uuid+",'0', '0', '0');");
    DEr Fehler ist irgend was da, wo die UUID als value festgelegt wird...
     
    #5
  6. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    41
    Genau so muss das aussehen!


    Da hast du vollkommen recht. Das ResultSet ist Null, entsprechend kann darauf keine Funktionen aufgerufen werden. Schaust du in der Log etwas weiter oben findest du
    Code (Text):
    1. [06:37:41] [Server thread/WARN]: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 64,056,183 milliseconds ago.  The last packet sent successfully to the server was 64,056,183 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
    Das bedeutet dass die Verbindung zu deinem MySQL-Server nicht aufgebaut werden kann, entsprechend ist das Resultat der SQL-Abfrage Null.
     
    #6
  7. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    41
    Hast du alle Daten korrekt eingegebenen? Vielleicht 'localhost' zu 127.0.0.1 oder den Port ändern....
    Du findest hier weitere Lösungsvorschläge.
     
    #7
  8. ZockerBoysHD
    Offline

    ZockerBoysHD

    Registriert seit:
    15. August 2014
    Beiträge:
    44
    Minecraft:
    ZockerBoysHD
    #8
  9. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    41
    Den neuen Fehler bekommst du weil die neue Connector-Klasse nicht richtig funktioniert. Ich kann auch nicht nachvollziehen wieso du die ersetzt hast, die alte sah meines Erachtens ganz solide aus. Dein Ursprünglicher Fehler liegt nicht an dem Quellcode selber, sondern wahrscheinlich an den Daten mit denen die du dich mit deinem MySQL-Server verbindest, sprich Passwort, Username etc.
    Wenn die soweit korrekt sind kann es daran liegen, dass du in deiner Mainklasse 'localhost' anstelle von '127.0.0.1' angibst.
     
    #9
  10. ZockerBoysHD
    Offline

    ZockerBoysHD

    Registriert seit:
    15. August 2014
    Beiträge:
    44
    Minecraft:
    ZockerBoysHD
    Abber das mit dem ip ding habe ich ja auch getetstet... geht nicht..... Und dnan wollte ich halt probieren die klasse mal neu zu machen... Abebr nun sagt der ja, die Datenbank gibt es garnicht... abebr verbinden so tut er nun!!! Nur es gibt nen fheler mti der Datenbank.
     
    #10
  11. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    41
    Hab mich nochmal durch deinen Code gewühlt, sieht soweit alles richtig aus. Die Log ergibt folgenden Fehler:
    Code (Text):
    1. [03:59:01] [Server thread/INFO]: [MySQL] Die Verbindung zur MySQL ist fehlgeschlagen! Fehler: Could not create connection to database server. Attempted
    2. reconnect 3 times. Giving up.
    Der wohl von deiner Connector-Klasse geworfen wird
    Code (Javascript):
    1.     public static void connect(){
    2.         if(!isConnected()){
    3.             try {
    4.                 con = DriverManager.getConnection("jdbc:mysql//"+host+":"+port+"/"+database,username,password);
    5.                 System.out.println("[MySQL] Verbindung aufgebaut!");
    6.             } catch (SQLException e) {
    7.                 e.printStackTrace();
    8.             }
    9.         }
    Entweder ist deine MySQL-DB falsch eingestellt oder deine Verbindungsdaten sind falsch. Bist du dir sicher dass dein MySQL-Server über Port 3306 läuft?

    EDIT:
    Code (Javascript):
    1.     public static String host = "localhost";
    2.     public static String port = "3306";
    3.     public static String database = "FFA";
    4.     public static String username = "localhost";
    5.     public static String password = "ZockerBoysHD1";
    Soll der Nutzer localhost heißen?
     
    #11
  12. ZockerBoysHD
    Offline

    ZockerBoysHD

    Registriert seit:
    15. August 2014
    Beiträge:
    44
    Minecraft:
    ZockerBoysHD

    Das mit dem Nutzer: Das war nur etst und ja. der heist aktuell aus testzwecken so.

    Und iwe finde ich denn den Port raus?!?!? Weil ich habe eig. alles bei der installation richtig eingestellt.
     
    #12
  13. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    41
    Heißt du hostest die Datenbank selber? Wenn ja, auf welchen System.
    Der Port steht in der Config von deinem SQL-Server, wo genau die liegt kann ich dir ohne weiteres nicht sagen.
    Hat der Datenbankbenutzer auch die erforderlichen Rechte?
    Alternativ kannst du dir hier eine Testdatenbank anlegen und damit ausprobieren ob's funktioniert.
     
    #13
  14. ZockerBoysHD
    Offline

    ZockerBoysHD

    Registriert seit:
    15. August 2014
    Beiträge:
    44
    Minecraft:
    ZockerBoysHD
    Natürlich auf dem Vserevr, wo der ganze rest auch laüft.....

    klaro!
     
    #14
  15. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    41
    #15
  16. ZockerBoysHD
    Offline

    ZockerBoysHD

    Registriert seit:
    15. August 2014
    Beiträge:
    44
    Minecraft:
    ZockerBoysHD
    Nope ist nicht so. Egal. Ich habe eh KillTimePvP hingeschmissen. ich ahbe jz EgoPvP und da brauche ich nicht umbedingt mysql drin :D

    Trotzdem danke!!
     
    #16
  17. Figz
    Offline

    Figz

    Registriert seit:
    9. Mai 2016
    Beiträge:
    30
    Sehr schlechter Ansatz und hat keine Aussicht auf erfolg.
     
    #17
  18. Bolver
    Offline

    Bolver

    Registriert seit:
    9. Juni 2014
    Beiträge:
    8
    Versuch mal das:
    ResultSet rs = KilltimeMain.mysql.query("SELECT * FROM Stats WHERE UUID='"+ uuid +"');

    Und bitte benutz nie mehr SELECT * benutz lieber

    SELECT UUID FROM Stats

    oder

    SELECT COINS FROM Stats

    SELECT UUID, COINS FROM Stats

    geht auch, nur diese Abfragen sind schneller da sie weniger Daten zurückgeben :)
     
    #18