- Баллы
- 31
- Имя в Minecraft
- PashkaNy6ashka
Приветствую всех читателей! В этом Стартапе я расскажу о том, как подключаться к базе данных, как создавать таблицы, как добавлять туда данные и многое другое...
Иногда надоедает использовать конфиги для хранения информации, и вам придётся использовать Базы Данных. Работать с ними не очень сложно.
Нам необходимо:
- Умение писать плагины.
- Любая IDE, в моём случае Eclipse
- JDBC драйвер - https://bitbucket.org/xerial/sqlite-jdbc/downloads/
- Терпение
- Базовое знание синтаксиса SQLite - https://ruseller.com/lessons.php?id=2277&rub=34 и http://xbb.uz/db/Tipy-dannyh-v-SQLite-versii-3
Глава 1 - Подготовка среды.
Введение:
Ну что же, пришла пора начинать!
В этой главе мы настроим среду, создадим необходимые классы.
Начало:
Создаём проект в нашей IDE или используем уже готовый, в моём случаи Eclipse, и добавляем туда библиотеки JDBC и Bukkit/Spigot API. (Я думаю показывать это не надо, если вы не знаете как это делать, то научитесь сначала делать плагины). Делаем главный класс и другие необходимые для вас классы. Примерно так выглядит у меня проект:

У вас он может выглядеть по другому.
Далее мы начинаем делать классы для Базы Данных.
Нам необходимо сделать пакет, назвать его можно как угодно, я же назову его database.
И в этом пакете сделать два класса:
Первый: Абстрактный класс, его имя может быть любым, я назову его DataBaseCore. P.S - Если вы не знаете что это такое, то я рекомендую вам почитать статьи об этом виде классов.
Второй: Класс для самого подключения к Базе Данных, его имя может быть любым, в моём случаи SQLite.
Как сделать Абстрактный класс?
Итог:
Мы завершили Главу #1. Эта глава была очень лёгкой.
Можно приступить ко второй!!!
Глава 2 - Подключение к Базе Данных.
Введение:
В этой главе мы научимся делать подключение к нашей Базе Данных.
Начало:
И так, пожалуй начнём с настройки класса DataBaseCore.
Нам нужно написать код, который пригодится вам при подключении.
Нам нужно создать Абстрактные методы, то есть обязательные.
Первый: Метод получения подключения, называем его как угодно, я же назову его getDBConnection
Второй: Метод создания таблиц, которые нам будут нужны, называем к вам угодно, я назову его load
Делается это так:
P.S - Обязательно при импорте Connection используем: java.sql.Connection
С этим классом мы временно закончили, в следующих главах мы будем настраивать его. Там будут храниться все ваши методы для работы с Базой Данных.
Так же в этом классе нужно объявить переменную типа Connection под именем con, Statement под именем stat, ResultSet под именем rs;
Теперь сделаем настройку класса SQLite.
Для начала сделаем этот класс главным для нашего Абстрактного Класса.
Далее вылетает нам ошибка! Нужно создать конструктор, значит делаем его.
Опять же нам вылетает ошибка! Мы должны сделать два метода: getDBConnection и load
Вот так всё выглядит:
Пришло время делать подключение!
Начнём с метода getDBConnection:
Нам необходимо сделать файл в котором будет находиться База Данных.
Я думаю многие знают как это сделать, но я покажу на всякий случай:
При помощи этого кода мы создаём файл Базы Данных.
Теперь, мы точно знаем что файл Базы Данных существует.
Можно сделать само подключение.
Сделаю объяснение кода.
При помощи кода:
Мы создаём подключение. В качестве пути для подключения мы используем наш файл dbFile.
Ну и на этом подключение к Базе Данных установлено!
P.S - Обязательно прочтите статью про основной синтаксис SQLite, https://ruseller.com/lessons.php?id=2277&rub=34 и http://xbb.uz/db/Tipy-dannyh-v-SQLite-versii-3
Далее настроим метод load:
В этом методе нам нужно присвоить значение переменной con, значением является метод getDBConnection, и создать переменную типа String с любым именем, я назову её query и ей нужно присвоить значение, значение будет кодом для создания Таблицы в Базе Данных SQLite.
У моей таблицы будет имя players, а графы будут id, name
Я буду сохранять туда игроков при первом заходе на сервер.
Далее мы должны сделать запрос на обновление Базы Данных, то есть мы должны объявить переменную Statement, я сделаю это с именем stat и дать ей значение con.createStatement()
И в методе load прописать данный код:
Обязательно закрываем statement.
И таких запросов можно сделать сколько угодно.
Итог:
Мы сделали подключение к базе данных, в следующей Главе мы научимся добавлять и получать данные.
Глава 3 - Работа с данными.
Введение:
Мы научимся работать с данными, получать их, добавлять и многое другое.
Начало:
Нам нужно вернуться в наш Абстрактный класс. И там мы будем хранить наши методы.
По типу: Добавление данных, Удаление данных и т.п
Начнём с добавления данных:
Сделаем метод insert
Вот таким образом
В переменную name мы будем добавлять имя игрока.
В переменную con добавляем метод getDBConnection
Вот так это выглядит:
Далее мы объявляем переменную типа String с именем query.
И вносим в нее такие данные:
Так вот, этим кодом мы добавляем значение в таблицу players, в скобках указанно что мы добавляем, а после VALUES в скобках указанно само значения, его нужно поместить в такие скобочки: 'name'
Далее мы опять делаем запрос на обновление:
Ну вот и готов метод добавления данных, теперь используйте его как пожелаете.
Метод добавления готов!!! Пора сделать метод получения данных.
Вот как он выглядит:
Далее присваиваем переменной con значение getDBConnection
Объявляем переменную типа String, под именем query
Объясню значение переменной query, SELECT name - Получаем графу name, FROM players - Из таблицы players
Далее переменной rs присваиваем значение con.createStatement().executeQuery(query)
Т.к значений будет много, нам нужно воспользоваться циклом while
Далее работаем с результатом как угодно.
Можно его поместить в переменную, лично я помещу его в переменную.
Делается это так:
Что бы получить определённую строку или число нужно ввести, rs.getString("name"), если вы хотите получить число то, rs.getInt("id').
Обязательно в конце используем rs.close(), не в цикле while, а после него!!!
Теперь мы получили результат и работаем с ним как захотим.
Итог:
Я научил вас основам, если захотите буду рассказывать дальше о многом другом.
Всем спасибо кто читал! Жду критики, без этого никак)
Если заметите опечатку или ошибку, сообщите мне!
Иногда надоедает использовать конфиги для хранения информации, и вам придётся использовать Базы Данных. Работать с ними не очень сложно.
Нам необходимо:
- Умение писать плагины.
- Любая IDE, в моём случае Eclipse
- JDBC драйвер - https://bitbucket.org/xerial/sqlite-jdbc/downloads/
- Терпение
- Базовое знание синтаксиса SQLite - https://ruseller.com/lessons.php?id=2277&rub=34 и http://xbb.uz/db/Tipy-dannyh-v-SQLite-versii-3
Глава 1 - Подготовка среды.
Введение:
Ну что же, пришла пора начинать!
В этой главе мы настроим среду, создадим необходимые классы.
Начало:
Создаём проект в нашей IDE или используем уже готовый, в моём случаи Eclipse, и добавляем туда библиотеки JDBC и Bukkit/Spigot API. (Я думаю показывать это не надо, если вы не знаете как это делать, то научитесь сначала делать плагины). Делаем главный класс и другие необходимые для вас классы. Примерно так выглядит у меня проект:

У вас он может выглядеть по другому.
Далее мы начинаем делать классы для Базы Данных.
Нам необходимо сделать пакет, назвать его можно как угодно, я же назову его database.
И в этом пакете сделать два класса:
Первый: Абстрактный класс, его имя может быть любым, я назову его DataBaseCore. P.S - Если вы не знаете что это такое, то я рекомендую вам почитать статьи об этом виде классов.
Второй: Класс для самого подключения к Базе Данных, его имя может быть любым, в моём случаи SQLite.
Как сделать Абстрактный класс?
Код:
package Имя вашего пакета;
public abstract class Имя абстрактного класса {
}
Мы завершили Главу #1. Эта глава была очень лёгкой.
Можно приступить ко второй!!!
Глава 2 - Подключение к Базе Данных.
Введение:
В этой главе мы научимся делать подключение к нашей Базе Данных.
Начало:
И так, пожалуй начнём с настройки класса DataBaseCore.
Нам нужно написать код, который пригодится вам при подключении.
Код:
package Имя вашего пакета;
import java.sql.Connection;
import Местонахождение главного класса;
public abstract class Имя абстрактного класса {
Имя главного класса plugin;
public Имя вашего абстрактного класса(Имя вашего главного класса instance){
plugin = instance;
}
public abstract Connection getDBConnection();
public abstract void load();
}
Первый: Метод получения подключения, называем его как угодно, я же назову его getDBConnection
Второй: Метод создания таблиц, которые нам будут нужны, называем к вам угодно, я назову его load
Делается это так:
Код:
package Имя вашего пакета;
import java.sql.Connection;
public abstract class Имя абстрактного класса {
public abstract Connection getDBConnection();
public abstract void load();
}
С этим классом мы временно закончили, в следующих главах мы будем настраивать его. Там будут храниться все ваши методы для работы с Базой Данных.
Так же в этом классе нужно объявить переменную типа Connection под именем con, Statement под именем stat, ResultSet под именем rs;
Код:
package Имя вашего пакета;
import java.sql.Connection;
public abstract class Имя абстрактного класса {
Connection con;
Statement stat;
ResultSet rs;
Имя главного класса plugin;
public Имя вашего абстрактного класса(Имя вашего главного класса instance){
plugin = instance;
}
public abstract Connection getDBConnection();
public abstract void load();
}
Для начала сделаем этот класс главным для нашего Абстрактного Класса.
Код:
package Имя пакета;
public class Имя класса для подключения extends Имя Абстрактного класса {
}
Код:
package Местонахождение главного класса;
import место нахождения вашего главного класса ;
public class Имя класса с подключением extends Имя абстрактного класса {
public Имя класса подключения(Имя главного класса instance) {
super(instance);
}
}
Вот так всё выглядит:
Код:
package Имя пакета;
import java.sql.Connection
import Местонахождение главного класса;
public class Имя класса с подключением extends Имя абстрактного класса {
public Имя класса с подключением(Имя главного класса instance) {
super(instance);
}
public Connection getDBConnection() {
return null;
}
public void load() {
}
}
Начнём с метода getDBConnection:
Нам необходимо сделать файл в котором будет находиться База Данных.
Я думаю многие знают как это сделать, но я покажу на всякий случай:
Код:
package Имя пакета;
import java.sql.Connection;
import Местонахождение главного класса;
public class Имя класса с подключением extends Имя абстрактного класса {
public Имя класса с подключением(Имя главного класса instance) {
super(instance);
}
File dbFile = new File(plugin.getDataFolder() + File.separator + "Имя Базы Данных.db");
public Connection getDBConnection() {
if(plugin.getDataFolder().mkdirs()) {
plugin.getDataFolder().mkdirs();
}
if(!dbFile.exists()) {
try {
dbFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void load() {
}
}
Теперь, мы точно знаем что файл Базы Данных существует.
Можно сделать само подключение.
Код:
package Имя пакета;
import java.sql.Connection;
import Местонахождение главного класса;
public class Имя класса с подключением extends Имя абстрактного класса {
public Имя класса с подключением(Имя главного класса instance) {
super(instance);
}
File dbFile = new File(plugin.getDataFolder() + File.separator + "Имя Базы Данных.db");
public Connection getDBConnection() {
if(plugin.getDataFolder().mkdirs()) {
plugin.getDataFolder().mkdirs();
}
if(!dbFile.exists()) {
try {
dbFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
Class.forName("org.sqlite.JDBC");
con = DriverManager.getConnection("jdbc:sqlite:" + dbFile);
return con;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
public void load() {
}
}
Сделаю объяснение кода.
При помощи кода:
Код:
try {
Class.forName("org.sqlite.JDBC");
con = DriverManager.getConnection("jdbc:sqlite:" + dbFile);
return con;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
Ну и на этом подключение к Базе Данных установлено!
P.S - Обязательно прочтите статью про основной синтаксис SQLite, https://ruseller.com/lessons.php?id=2277&rub=34 и http://xbb.uz/db/Tipy-dannyh-v-SQLite-versii-3
Далее настроим метод load:
В этом методе нам нужно присвоить значение переменной con, значением является метод getDBConnection, и создать переменную типа String с любым именем, я назову её query и ей нужно присвоить значение, значение будет кодом для создания Таблицы в Базе Данных SQLite.
Код:
public void load() {
con = getDBConnection();
String query = "CREATE TABLE IF NOT EXISTS players ( id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(255));";
}
Я буду сохранять туда игроков при первом заходе на сервер.
Далее мы должны сделать запрос на обновление Базы Данных, то есть мы должны объявить переменную Statement, я сделаю это с именем stat и дать ей значение con.createStatement()
И в методе load прописать данный код:
Код:
public void load() {
con = getDBConnection();
String query = "CREATE TABLE IF NOT EXISTS players ( id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(255));";
try {
stat = con.createStatement();
stat.executeUpdate(query);
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
И таких запросов можно сделать сколько угодно.
Итог:
Мы сделали подключение к базе данных, в следующей Главе мы научимся добавлять и получать данные.
Глава 3 - Работа с данными.
Введение:
Мы научимся работать с данными, получать их, добавлять и многое другое.
Начало:
Нам нужно вернуться в наш Абстрактный класс. И там мы будем хранить наши методы.
По типу: Добавление данных, Удаление данных и т.п
Начнём с добавления данных:
Сделаем метод insert
Вот таким образом
Код:
public void insert(String name) {
}
В переменную con добавляем метод getDBConnection
Вот так это выглядит:
Код:
public void insert(String name) {
con = getDBConnection();
}
И вносим в нее такие данные:
Код:
public void insert(String name) {
con = getDBConnection();
String query = "INSERT INTO players (name) VALUES ('" + name + "');";
}
Далее мы опять делаем запрос на обновление:
Код:
public void insert(String name) {
con = getDBConnection();
String query = "INSERT INTO players (name) VALUES ('" + name + "');";
try {
stat = con.createStatement();
stat.executeUpdate(query);
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
Метод добавления готов!!! Пора сделать метод получения данных.
Вот как он выглядит:
Код:
public void select(String name) {
}
Объявляем переменную типа String, под именем query
Код:
public void select(String name) {
con = getDBConnection();
String query = "SELECT name FROM players;";
}
Далее переменной rs присваиваем значение con.createStatement().executeQuery(query)
Код:
public void select(String name) {
con = getDBConnection();
String query = "SELECT name FROM players;";
try {
rs = con.createStatement().executeQuery(query);
} catch (SQLException e) {
e.printStackTrace();
}
}
Далее работаем с результатом как угодно.
Можно его поместить в переменную, лично я помещу его в переменную.
Делается это так:
Код:
public void select(String name) {
con = getDBConnection();
String query = "SELECT name FROM players;";
try {
rs = con.createStatement().executeQuery(query);
while(rs.next()) {
String name2 = rs.getString("name");
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
Обязательно в конце используем rs.close(), не в цикле while, а после него!!!
Теперь мы получили результат и работаем с ним как захотим.
Итог:
Я научил вас основам, если захотите буду рассказывать дальше о многом другом.
Всем спасибо кто читал! Жду критики, без этого никак)
Если заметите опечатку или ошибку, сообщите мне!
Последнее редактирование: