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

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

AdMiRaLL

Активный участник
Пользователь
Баллы
68
Имя в Minecraft
AdMiRaLLL
Нужно устроить в плагине работу с базами данных Mysql
Есть какие нибудь хорошие и понятные статьи на эту тему?
 
Это драйвера для работы в качестве клиента.
хостанутая БД подключится, даже удаленная.
 
Добавлю: bukkit сам задействует эти драйвера.
 
В комплекте с буккитом
Добавлю: bukkit сам задействует эти драйвера.
То есть можно не качать никаких библиотек, просто писать код?
А теперь подскажите, что импортировать и где посмотреть документацию
 
Держи, мою 'либу' с говнокодом :D
JavaScript:
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());
        }
 
Держи, мою 'либу' с говнокодом :D
JavaScript:
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;
        }
    }

}
Кодировку соединения ещё по-хорошему нужно выставлять.
 
Найди библиотеку SimpleMySQL. Весит 13кб, юзать просто.
Java:
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'");
}
}
 
У меня возникли проблемы с подключением к базе данных.
У меня есть база данных на 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.
 
Что-же это за запрос такой, на 5 мегабайт... Разбей его на части?
 
вот второй вид ошибки
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.
На сервере MySQL настрой в mysql.conf переменную max_allowed_packet, увеличив c 1M до 16M
 

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

Назад
Верх