Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Java & SQLite

Тема в разделе "Разработка плагинов для новичков", создана пользователем Korvinius, 9 май 2016.

  1. Автор темы
    Korvinius

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

    Баллы:
    88
    Пришло время, когда мне понадобилась база данных. В моем случае, самый оптимальный вариант, это SQLite. Долго гуглил, ковырялся в чужих плагинах, но, что то у меня обучение работы с БД почти не продвигается, поэтому прошу совета у Вас, подскажите где можно об этом почитать, на русском, украинском или белорусском языках.
    Я вот навырезал с чужих плагинов кусков:
    насколько я смог понять, метод connect() нужен для подключения к БД, чтения данных или создания таблиц, если она пуста, остальные методы как бы воспомогательные, или есть среди них ненужные? Что мне сюда нужно еще добавить, для полноценной работы с БД, то есть, записи, перезаписи, сохранения и так далее? Или это, что я наваял вообще никуда не годится? Короче прошу советов и ссылок на обучающие материалы :)
     
  2. Хостинг MineCraft
    <
  3. Larin

    Larin Старожил Пользователь

    Баллы:
    103
  4. Автор темы
    Korvinius

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

    Баллы:
    88
    О! Спасибо большое, хоть и не на русском, но вполне воспринимается, буду экспериментировать:)
     
  5. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    И не используйте статические методы там, где можно обойтись без них.
     
  6. Автор темы
    Korvinius

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

    Баллы:
    88
    почему?
     
  7. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Бзз.. Бзз.. Только не вздумайте подключать либы. А то бывает народ который чтоб 1 число сейвнуть включают в плагин либу на 4 мб
    Почти все средства вам необходимые уже есть в самой Java / Spigot'e
    https://www.spigotmc.org/threads/how-to-sqlite.56847/[DOUBLEPOST=1462788119,1462788084][/DOUBLEPOST]
    Ну не нужно.
     
  8. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Рассмотрю именно твой код: допустим, понадобится тебе две базы sqlite. Что будешь делать? Открывать и закрывать подключения на каждую из них?
     
  9. GoodCoder

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

    Баллы:
    76
    А ещё пользуйтесь подготовленными выражениями, для защиты от инъекций. Костыли в прошлом.
    Код:
    public static String strip(String str) {
            str = str.replaceAll("<[^>]*>", "");
            str = str.replace("\\", "\\\\");
            str = str.trim();
            return str;
        }
    
        public static ResultSet executeQuery(String query) {
            if(!hasConnected()) {
                connect();
            }
            ResultSet res = null;
            try {
                res = conn.createStatement().executeQuery(strip(query));
            } catch (Exception e) {
            }
    
            return res;
        }
    
     
  10. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Твой strip не поможет, если я захочу дропнуть базу явно. Если уж и делать executeQuery статическим, то только с передачей conn и с предварительной проверкой conn на валидность.
     
  11. GoodCoder

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

    Баллы:
    76
    Не мой. Это из поста автора.
     
  12. Автор темы
    Korvinius

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

    Баллы:
    88
    Спасибо большое, вроде начинаю понимать это дело, по немножку.
    то есть вообще в плагине стараться не использовать статические методы или только в работе с базой данных?
     
  13. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    Просто пугают начинающего. Ничего страшного в статичных методах/константах нет, просто нужно уметь ими пользоваться.
    https://stackoverflow.com/questions/2671496/java-when-to-use-static-methods
     
  14. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Всегда пожалуйста :)

    Вообще он прав. Очень даже.

    А вот меня порой переклинивает и мне например начинает казаться что вполне хорошая идея писать без статиков или например без if'ов :cute:
     
  15. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ничего страшного нет до тех пор пока не познакоишься с класслоадером баккита, и не узнаешь что ссылка на синглтоны останется на старый инстанс и всё разъедется к чертям при перезагрузке плагина.
    Короче аккуратно очёнь надо работать.
     
  16. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    w8. То есть если реализовать классический синглтон со статиком в мейн классе, методом getInstance и присваиванием значения в onLoad, то все может пойти очень печально?
     
  17. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    У меня бывает приступ замены if на switch, везде, где возможно и невозможно. Правда вроде перестал так делать.
     
  18. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Я это прошел. Сейчас порой отключаю себе поддержку Java 8 чтоб весь код незалямбдить :D
     
  19. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    По сути, нужно подталкивать слоупоков, чтобы ставили java 8, ибо потом сами жалуются на производительность.(В майне не хватает многопоточности, жаль все из-за этого хейтят java)
     
  20. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Да хейтят потому что модно
    И великие мыслители мыслят "ОХ ЕСЛИБ НА с++ ПЕРЕПИСАТЬ"
    Если бы сервер писался на С++ так же "хорошо" как он написан на Java, то к лагам у нас бы еще добавились утечки памяти :D

    Я пишу для себя, потому Optional.ofNullable(event.getItem()).ifPresent <3
     
  21. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    Я тебе больше скажу, утечки памяти есть там даже сейчас.
     

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