- Баллы
- 68
- Имя в Minecraft
- AdMiRaLLL
Нужно устроить в плагине работу с базами данных Mysql
Есть какие нибудь хорошие и понятные статьи на эту тему?
Есть какие нибудь хорошие и понятные статьи на эту тему?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Я так понял, это какие-то драйвера баз данных, которые надо качать.
В комплекте с буккитомА нужно ли их качать?
В комплекте с буккитом
То есть можно не качать никаких библиотек, просто писать код?Добавлю: bukkit сам задействует эти драйвера.
То есть можно не качать никаких библиотек, просто писать код?
А теперь подскажите, что импортировать и где посмотреть документацию

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());
}
Держи, мою 'либу' с говнокодом
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; } } }
Ага, но я эту либу юзал для записи в бд, и ничего оттуда не брал, вот и не указывал кодировку)Кодировку соединения ещё по-хорошему нужно выставлять.
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'");
}
}
вот второй вид ошибкиОшибки одинаковые ведь.
На сервере MySQL настрой в mysql.conf переменную max_allowed_packet, увеличив c 1M до 16Mвот второй вид ошибки
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