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

Помогите Работа с БД

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

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

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    Нужно устроить в плагине работу с базами данных Mysql
    Есть какие нибудь хорошие и понятные статьи на эту тему?
     
  2. Хостинг MineCraft
    <
  3. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
  4. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
  5. promc

    promc Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    pro_mc
  6. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    Я так понял, это какие-то драйвера баз данных, которые надо качать.
    А нужно ли их качать? Если уже есть хостанутая БД
     
  7. promc

    promc Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    pro_mc
    Это драйвера для работы в качестве клиента.
    хостанутая БД подключится, даже удаленная.
     
  8. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    В комплекте с буккитом
     
  9. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    Добавлю: bukkit сам задействует эти драйвера.
     
  10. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    То есть можно не качать никаких библиотек, просто писать код?
    А теперь подскажите, что импортировать и где посмотреть документацию
     
  11. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
     
  12. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    Держи, мою 'либу' с говнокодом :D
    Код:
    package ru.ennosium.hilgert.protect.utils.mysql;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class SQLUtil {
    
        private Connection conn;
        private String error;
        public boolean isConnected = false;
    
        public boolean connect() {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection("jdbc:mysql://ХОСТ:3306/БАЗА_ДАННЫХ",
                        "ЛОГИН", "ПАРОЛЬ");
                isConnected = true;
                return true;
            } catch (Exception err) {
                error = err.toString();
                return false;
            }
        }
    
        public void close() {
            try {
                conn.close();
            } catch (SQLException e) {
                System.out.println(e.toString());
            }
        }
    
        public String getErorr() {
            return error;
        }
    
        public boolean exec(String query) {
            try {
                return conn.createStatement().execute(query);
            } catch (SQLException e) {
                System.out.println(e.toString());
                return false;
            }
        }
    
        public ResultSet get(String query) {
            try {
                return conn.createStatement().executeQuery(query);
            } catch (SQLException e) {
                System.out.println(e.toString());
                return null;
            }
        }
    
    }
    
    Код:
    SQLUtil sql = new SQLUtil();
    if (sql.connect()) {
                Bukkit.getConsoleSender().sendMessage(
                        ChatColor.GREEN
                                + "EnProtect успешно подключился к базе данных");
            } else {
                Bukkit.getConsoleSender().sendMessage(
                        ChatColor.RED
                                + "EnProtect не смог подключится к базе данных.");
                Bukkit.getConsoleSender().sendMessage(
                        ChatColor.RED + sql.getErorr());
            }
     
  13. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Кодировку соединения ещё по-хорошему нужно выставлять.
     
  14. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    Ага, но я эту либу юзал для записи в бд, и ничего оттуда не брал, вот и не указывал кодировку)
     
  15. Konstantin773

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

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Найди библиотеку SimpleMySQL. Весит 13кб, юзать просто.
    Код:
    import java.util.Map;
    import simplemysql.SimpleMySQL;
    import simplemysql.SimpleMySQLResult;
    public class Example{
    public static SimpleMySQL mysql;
    
    public void onEnable(){
          mysql = new SimpleMySQL();
          mysql.connect("localhost", "user", "******", "db");
    }
    public void sqlExample(){
        ///SELECT///
        SimpleMySQLResult result = mysql.Query("SELECT * from `dle_users` where `name`='LOL'");
        result.getNumRows();///возвращает кол-во записей, полученнных в запросе
        result.FetchAssoc();///возвращает запись (тип Map<String,String>)
        ///при каждом вызове производит перевод на следующую запись ///
       ///т.е. читать все записи можно так///
       if(result.getNumRows()>0){
           Map<String, String> myRow;
            while (!(myRow = result.FetchAssoc()).isEmpty()){
                   ///doSomething();
                   String name = myRow.get("name");
                   String pass = myRow.get("password");
            }
       }
       ////UPDATE и прочие запросы///
       mysql.Query("UPDATE `dle_users` SET `password`='smth' WHERE `name`='LOL'");
    }
    }
    
     
  16. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    У меня возникли проблемы с подключением к базе данных.
    У меня есть база данных на http://ip:port/
    Какой вид будет иметь строка?
    1. conn = DriverManager.getConnection("jdbc:mysql://ip: port/dbname", "name", "pass")
    Почему-то не получается подключиться, выдаёт ошибки. Различные, в зависимости от того какой адрес указываю.
    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

    или
    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
     
  17. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Ошибки одинаковые ведь.
     
  18. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    вот второй вид ошибки
    20:57:58 [INFO] com.mysql.jdbc.PacketTooBigException: Packet for query is too la
    rge (5526600 > 1048576). You can change this value on the server by setting the
    max_allowed_packet' variable.
     
  19. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Что-же это за запрос такой, на 5 мегабайт... Разбей его на части?
     
  20. Konstantin773

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

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    На сервере MySQL настрой в mysql.conf переменную max_allowed_packet, увеличив c 1M до 16M
     
  21. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    Мне кажется дело не в этом. Вряд ли запрос весит много. Ведь я даже законнектиться не могу.
     

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