· 7 years ago · Oct 20, 2018, 03:50 PM
1package ru.slimechan.yggdrasilbot.sql;
2
3import java.sql.Connection;
4import java.sql.DriverManager;
5import java.sql.PreparedStatement;
6import java.sql.ResultSet;
7import java.sql.SQLException;
8
9import ru.slimechan.yggdrasilbot.logger.Logger;
10import ru.slimechan.yggdrasilbot.managers.PlayerManager;
11import ru.slimechan.yggdrasilbot.objects.Player;
12
13public class SQLite {
14
15 private String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS player_data (id INT, name TEXT, level INT, exp FLOAT, energy INT, coins INT, boxes INT, inventory TEXT)";
16 private String GET_PLAYER = "SELECT name, level, exp, energy, coins, boxes, inventory FROM player_data WHERE id=?";
17 private String ADD_PLAYER = "INSERT INTO player_data (id, name, level, exp, energy, coins, boxes, inventory) VALUES (?,?,?,?,?,?,?,?)";
18 private String SAVE_PLAYER = "UPDATE player_data SET name=?,level=?,exp=?,energy=?,coins=?,boxes=?,inventory=? WHERE id=?";
19
20 String url;
21
22 public SQLite(String dataBase) {
23
24 url = "jdbc:sqlite:"+dataBase+".db";
25
26
27 }
28
29 private Connection getConnection() {
30
31
32 try {
33 Class.forName("org.sqlite.JDBC");
34 Connection con = DriverManager.getConnection(url);
35 Logger.Instance.Log("Connection to "+url+" is active!");
36 con.createStatement().executeUpdate(CREATE_TABLE);
37
38 return con;
39 } catch (SQLException e) {
40 Logger.Instance.Err("Error while connecting to "+url);
41 e.printStackTrace();
42 } catch (ClassNotFoundException e) {
43 e.printStackTrace();
44 }
45
46 return null;
47 }
48
49 public void loadPlayer(int id) {
50
51 new Thread() {
52
53 @Override
54 public void run() {
55 try {
56 final PreparedStatement statement = getConnection().prepareStatement(GET_PLAYER);
57 statement.setInt(1, id);
58 final ResultSet result = statement.executeQuery();
59
60 String name = result.getString(1);
61 int lvl = result.getInt(2);
62 double exp = result.getDouble(3);
63 int energy = result.getInt(4);
64 int coins = result.getInt(5);
65 int boxes = result.getInt(6);
66 String inv = result.getString(7);
67
68 Logger.Instance.Log("Player "+name+" loaded");
69
70 getConnection().close();
71
72 PlayerManager.Instance.add(new Player(id, name, lvl, exp, energy, coins, boxes, inv));
73
74 } catch (SQLException e) {
75 e.printStackTrace();
76 }
77 }
78
79 }.start();
80
81 }
82 public void addPlayer(Player pl) {
83 new Thread() {
84
85 @Override
86 public void run() {
87 try {
88 final PreparedStatement statement = getConnection().prepareStatement(ADD_PLAYER);
89 statement.setInt(1, pl.getId());
90 statement.setString(2, pl.getName());
91 statement.setInt(3, pl.getLevel());
92 statement.setFloat(4, (float) pl.getExp());
93 statement.setInt(5, pl.getEnergy());
94 statement.setInt(6, pl.getCoins());
95 statement.setInt(7, pl.getBoxes());
96 statement.setString(8, pl.getInvToSave());
97 statement.executeUpdate();
98 getConnection().close();
99 Logger.Instance.Log("Player "+pl.getName()+" created");
100 } catch (SQLException e) {
101 e.printStackTrace();
102 }
103 }
104
105 }.start();
106 }
107 public void savePlayer(Player pl) {
108 new Thread() {
109
110 @Override
111 public void run() {
112 try {
113 final PreparedStatement statement = getConnection().prepareStatement(SAVE_PLAYER);
114 statement.setInt(1, pl.getId());
115 statement.setString(2, pl.getName());
116 statement.setInt(3, pl.getLevel());
117 statement.setFloat(4, (float) pl.getExp());
118 statement.setInt(5, pl.getEnergy());
119 statement.setInt(6, pl.getCoins());
120 statement.setInt(7, pl.getBoxes());
121 statement.setString(8, pl.getInvToSave());
122 statement.executeUpdate();
123 getConnection().close();
124 Logger.Instance.Log("Player "+pl.getName()+" saved!");
125 } catch (SQLException e) {
126 e.printStackTrace();
127 }
128 }
129
130}.start();
131 }
132
133 public static final SQLite Instance = new SQLite("Yggdrasil");
134}