Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Ошибка при работе с БД (раньше не было, странно...)

Bars

Старожил
Девелопер
Пользователь
Баллы
173
Java:
    @EventHandler
    private void onPlayerJoin(PlayerJoinEvent e) {
        Player p = e.getPlayer();
        e.setJoinMessage(null);
        if (!p.hasPlayedBefore()) p.setLevel(20);
        for (Entity ent : p.getNearbyEntities(100, 100, 100)) {
            if ((ent instanceof Player)) {
                ((Player) ent).sendMessage("§cКажется, кто-то рядом! Не мешало бы осмотреться...");
                p.getWorld().playSound(ent.getLocation(), Sound.ARROW_HIT, 2.0F, 1.0F);
            }
        }
        plugin.isBleeding.put(p, false);
        plugin.isPoisoned.put(p, false);
        plugin.tagColor.put(p, 0);
        plugin.zombieKills.put(p, 0);
        plugin.pigzombieKills.put(p, 0);
        plugin.giantKills.put(p, 0);
        plugin.playerKills.put(p, 0);
        plugin.playerHeals.put(p, 0);
        plugin.deaths.put(p, 0);
        try {
            Connection conn = DatabaseUtils.connect();
            Statement st = conn.createStatement();
            if (!p.hasPlayedBefore()) st.executeUpdate("INSERT INTO `onlymz` (`player`) VALUES ('" + p.getName() + "')");
            ResultSet r = st.executeQuery("SELECT `is_bleeding`, `is_poisoned`, `player_kills`, `player_heals`, `zombie_kills`, `pigzombie_kills`, `giant_kills`, `deaths` FROM `onlymz` WHERE `player`='" + p.getName() + "'");
            if (r.getInt(1) == 1) plugin.isBleeding.put(p, true); // Вот здесь ошибка (строка 138)
            if (r.getInt(2) == 1) plugin.isPoisoned.put(p, true);
            if (r.getInt(3) >= 5) {
                plugin.tagColor.put(p, 1);
            } else if (r.getInt(4) >= 10) {
                plugin.tagColor.put(p, 2);
            } else {
                plugin.tagColor.put(p, 0);
            }
            TagAPI.refreshPlayer(p);
            plugin.zombieKills.put(p, r.getInt(5));
            plugin.pigzombieKills.put(p, r.getInt(6));
            plugin.giantKills.put(p, r.getInt(7));
            plugin.playerKills.put(p, r.getInt(3));
            plugin.playerHeals.put(p, r.getInt(4));
            plugin.deaths.put(p, r.getInt(8));
        } catch (Exception exc) {
            p.kickPlayer("§cОшибка запроса к базе данных");
            exc.printStackTrace();
        }
        plugin.sbCreate(p, p.getName());
        p.setScoreboard(plugin.scoreboards.get(p.getName()));
    }

Все остальные ошибки сводятся к тому же onPlayerJoin (PlayerJoinEvent).

Консоль сказал(а):
2013-12-21 04:04:00 [INFO] Bars[/93.85.155.193:5546] logged in with entity id 5 at ([world] -478.5, 64.0, 335.5)
2013-12-21 04:04:00 [SEVERE] Could not pass event PlayerQuitEvent to OnlyMZ v1.0
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:363)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:31)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:464)
at net.minecraft.server.management.ServerConfigurationManager.disconnect(ServerConfigurationManager.java:386)
at net.minecraft.network.NetServerHandler.func_72565_c(NetServerHandler.java:287)
at org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer.kickPlayer(CraftPlayer.java:222)
at ru.onlymc.OnlyMZ.listener.PlayerListener.onPlayerJoin(PlayerListener.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:361)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:31)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:464)
at net.minecraft.server.management.ServerConfigurationManager.func_72377_c(ServerConfigurationManager.java:319)
at net.minecraft.server.management.ServerConfigurationManager.func_72355_a(ServerConfigurationManager.java:180)
at net.minecraft.network.NetLoginHandler.completeConnection(NetLoginHandler.java:215)
at cpw.mods.fml.common.network.FMLNetworkHandler.handleClientConnection(FMLNetworkHandler.java:171)
at cpw.mods.fml.common.network.FMLNetworkHandler.onConnectionReceivedFromClient(FMLNetworkHandler.java:124)
at net.minecraft.network.NetLoginHandler.func_72529_d(NetLoginHandler.java:191)
at net.minecraft.network.NetLoginHandler.func_72532_c(NetLoginHandler.java:79)
at net.minecraft.server.ServerListenThread.func_71766_a(ServerListenThread.java:57)
at net.minecraft.server.dedicated.DedicatedServerListenThread.func_71747_b(SourceFile:29)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:859)
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:320)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:728)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:612)
at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:573)
Caused by: java.lang.NullPointerException
at ru.onlymc.OnlyMZ.OnlyMZ.savePlayerData(OnlyMZ.java:112)
at ru.onlymc.OnlyMZ.listener.PlayerListener.onPlayerQuit(PlayerListener.java:165)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:361)
... 31 more
2013-12-21 04:04:00 [SEVERE] java.sql.SQLException: Before start of result set
2013-12-21 04:04:00 [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
2013-12-21 04:04:00 [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
2013-12-21 04:04:00 [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
2013-12-21 04:04:00 [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
2013-12-21 04:04:00 [SEVERE] at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841)
2013-12-21 04:04:00 [SEVERE] at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2672)
2013-12-21 04:04:00 [SEVERE] at ru.onlymc.OnlyMZ.listener.PlayerListener.onPlayerJoin(PlayerListener.java:138)
2013-12-21 04:04:00 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2013-12-21 04:04:00 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2013-12-21 04:04:00 [SEVERE] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2013-12-21 04:04:00 [SEVERE] at java.lang.reflect.Method.invoke(Unknown Source)
2013-12-21 04:04:00 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:361)
2013-12-21 04:04:00 [SEVERE] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
2013-12-21 04:04:00 [SEVERE] at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:31)
2013-12-21 04:04:00 [SEVERE] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)
2013-12-21 04:04:00 [SEVERE] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:464)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.server.management.ServerConfigurationManager.func_72377_c(ServerConfigurationManager.java:319)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.server.management.ServerConfigurationManager.func_72355_a(ServerConfigurationManager.java:180)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.network.NetLoginHandler.completeConnection(NetLoginHandler.java:215)
2013-12-21 04:04:00 [SEVERE] at cpw.mods.fml.common.network.FMLNetworkHandler.handleClientConnection(FMLNetworkHandler.java:171)
2013-12-21 04:04:00 [SEVERE] at cpw.mods.fml.common.network.FMLNetworkHandler.onConnectionReceivedFromClient(FMLNetworkHandler.java:124)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.network.NetLoginHandler.func_72529_d(NetLoginHandler.java:191)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.network.NetLoginHandler.func_72532_c(NetLoginHandler.java:79)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.server.ServerListenThread.func_71766_a(ServerListenThread.java:57)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.server.dedicated.DedicatedServerListenThread.func_71747_b(SourceFile:29)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:859)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:320)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:728)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:612)
2013-12-21 04:04:00 [SEVERE] at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:573)



2013-12-21 04:04:00 [SEVERE] Could not pass event PlayerJoinEvent to OnlyMZ v1.0
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:363)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:31)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:464)
at net.minecraft.server.management.ServerConfigurationManager.func_72377_c(ServerConfigurationManager.java:319)
at net.minecraft.server.management.ServerConfigurationManager.func_72355_a(ServerConfigurationManager.java:180)
at net.minecraft.network.NetLoginHandler.completeConnection(NetLoginHandler.java:215)
at cpw.mods.fml.common.network.FMLNetworkHandler.handleClientConnection(FMLNetworkHandler.java:171)
at cpw.mods.fml.common.network.FMLNetworkHandler.onConnectionReceivedFromClient(FMLNetworkHandler.java:124)
at net.minecraft.network.NetLoginHandler.func_72529_d(NetLoginHandler.java:191)
at net.minecraft.network.NetLoginHandler.func_72532_c(NetLoginHandler.java:79)
at net.minecraft.server.ServerListenThread.func_71766_a(ServerListenThread.java:57)
at net.minecraft.server.dedicated.DedicatedServerListenThread.func_71747_b(SourceFile:29)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:859)
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:320)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:728)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:612)
at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:573)
Caused by: java.lang.NullPointerException
at ru.onlymc.OnlyMZ.OnlyMZ.sbReset(OnlyMZ.java:158)
at ru.onlymc.OnlyMZ.OnlyMZ.sbCreate(OnlyMZ.java:140)
at ru.onlymc.OnlyMZ.listener.PlayerListener.onPlayerJoin(PlayerListener.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:361)
... 18 more
 
UP
Java:
Connection conn = DatabaseUtils.connect();
Statement st = conn.createStatement();
ResultSet r = st.executeQuery("SELECT `is_bleeding`, `is_poisoned`, `player_kills`, `player_heals`, `zombie_kills`, `pigzombie_kills`, `giant_kills`, `deaths` FROM `onlymz` WHERE `player`='" + p.getName() + "'");
if (r.getInt(1) == 1) /*Вот здесь ошибка (строка 138)*/;
 
SQL запрос корявый, ты вообще его проверял сначала?
Исползуй PreparedStatements, они проще.
 
Кто так запросы делает? ResultSet в цикле должен обрабатываться.
И да, PreparedStatement лучше.
Описать не могу, с телефона.
 
Кто так запросы делает? ResultSet в цикле должен обрабатываться.
И да, PreparedStatement лучше.
Описать не могу, с телефона.
1. Даже если мускул возвращает одну строку?
2. Можно вкратце, чем в моей ситуации Statement хуже лучше не использовать и на что это влияет?
 
1. Даже если мускул возвращает одну строку?
2. Можно вкратце, чем в моей ситуации Statement хуже лучше не использовать и на что это влияет?
1) Чтобы начать брать значения из ResultSet, его, нужно, как сказано в ошибке, стартовать
2) PreparedStatement использовать лучше во всех случаях. Ещё от инъекций защищает
 
1. Так я просто написал r.next(). а потом получал результаты
2. А он не будет кешировать выбранные данные?
 
Сколько пользуюсь, не наблюдал такого
Что-то я не вдупляю, как его использовать...
Если conn.prepareStatement(arg1), то что выступает в роли аргумента? Как его вообще в моём случае использовать?
 
PreparedStatement ps = conn.prepareStatement("SELECT * FROM table WHERE name = ? AND id = ?");
ps.setString(1, "Вася");
ps.setInt(2, 1);
ResultSet rs = executeQuery();
 
Bars,
Код:
                  String a = null;
                  String b = null;
                  rs = statement.executeQuery("SELECT * FROM table WHERE field = something");
                  while(rs.next())
                  {
                      a = rs.getString("field1");
                      b = rs.getString("field2");
                  }
 

Поделиться этой страницей

Назад
Верх