1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Ошибка при отправке запроса к базе данных

Тема в разделе "Разработка плагинов для новичков", создана пользователем Sergeo, 11 авг 2021.

Статус темы:
Закрыта.
  1. Автор темы
    Sergeo

    Sergeo Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Solomka
    При попытке получить список хелперов - ошибка NullPointer

    Код отправки вопроса всем хелперам:

    Код:
        public void sendQuestion(Player p, String message) throws SQLException, ClassNotFoundException {
    
            if(users.isActiveQuestion(p.getName())) {
                p.sendMessage(translateAlternateColorCodes('&', msg.haveActiveQuestion()));
                return;
            }
    
            for(String name : users.getHelpers()) {
                if(!Bukkit.getPlayer(name).isOnline()) continue;
                Bukkit.getPlayer(name).sendMessage(msg.sSendQuestionFormat(message, p));
            }
    
            users.setActiveQuestion(p.getName(), true);
            new RunnableDB().start(p, config.getInt("Question.Cooldown"), RunnableType.COOLDOWN);
        }
    Метод получения:


    Код:
      
    rsList - @Getter public List<String> rsList;
    
    @Override
        public List<String> getHelpers() throws SQLException {
            rq.getAllValue(db.getConnection(), "true", "helper", db.DB_FILE, "*");
            return rq.getRsList();
        }
    Запрос к базе:


    Код:
        public void getAllValue(Connection connection, String compare, String target,
                                String dbName, String selected) throws SQLException {
    
            String get = "SELECT " + selected + " FROM " + dbName + " WHERE " + target + " = '" + compare + "'";
            Statement statement = connection.createStatement();
            ResultSet rs = statement.executeQuery(get);
    
            while (rs.next()) rsList.add(rs.getString("name"));
        }
     
  2. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    А ошибку?
     
  3. Автор темы
    Sergeo

    Sergeo Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Solomka
    Код:
    org.bukkit.command.CommandException: Unhandled exception executing command 'question' in plugin HelperMode v1.0.4
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1399) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1234) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_51]
            at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_51]
            at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_51]
    Caused by: java.lang.NullPointerException
            at ru.solomka.helper.commands.util.methods.Question.sendQuestion(Question.java:32) ~[?:?]
            at ru.solomka.helper.commands.QuestionCommand.onCommand(QuestionCommand.java:46) ~[?:?]
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
     
  4. ВukkitPrоfi

    ВukkitPrоfi Активный участник Пользователь

    Баллы:
    76
    Не поверишь, но если игрок оффлайн, то выдаст null
     
  5. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    И ещё, в этом случае лучше использовать Bukkit.getPlayerExact() - Bukkit.getPlayer(), если не найдет игрока, возратит того, у которого ник начинается с этой строки. (imDa -> imDaniX)
     
  6. deadanykey

    deadanykey Активный участник Пользователь

    Баллы:
    96
    Bukkit.getOfflinePlayer(name).isOnline

    Гарантированно вернёт состояние игрока, даже если его и не было никогда.
     
  7. swat1x

    swat1x Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    swat1x
    if(Bukkit.getPlayer("swat1x") == null). Вот как проверяется онлайн ли игрок
     
  8. Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Попойся бога юзать getOfflinePlayer
     
  9. deadanykey

    deadanykey Активный участник Пользователь

    Баллы:
    96
    Почему?
     
  10. Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Нестабильная тема.
     
  11. deadanykey

    deadanykey Активный участник Пользователь

    Баллы:
    96
    Что именно нестабильно?
    Чем грозит?
     
  12. Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Сервер залагивает при использовании данного метода, ибо чем больше игроков заходил на сервер тем дольше ему искать нужно.
     
  13. deadanykey

    deadanykey Активный участник Пользователь

    Баллы:
    96
    Кого он там ищет? Очень любопытно.
     
  14. Автор темы
    Sergeo

    Sergeo Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Solomka
    Он указывает на строку с получение хелперов, а именно users.getHelpers() - NullPointer


    Код:
            for(String name : users.getHelpers()) - Он бьет NullPointer
     
  15. Автор темы
    Sergeo

    Sergeo Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Solomka
    Решено!
     
Статус темы:
Закрыта.

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