- Баллы
- 173
Мне нужно дописать плагин выдачи предметов из бд, но только что бы он был мультисерверный. Я остановился на том что бы сделать проверку на слово. Поясняю, есть в таблице колонка msmod, где я храню названия серверов. Например я имею там название sandbox то в конфиге плагина нужно указать это название что бы в дальнейшем плагин брал значения со всех колонок и той что я говорил ранее только если в ней имеется это слово, в противном случаи должно писать "Вы не имеете купленных вещей".
Надеюсь на вашу помощь, сам дописать не могу, ооооочень мало знаний в java.
Вот код который отвечает за подкл. к бд и выбор таблиц.
Надеюсь на вашу помощь, сам дописать не могу, ооооочень мало знаний в java.
Вот код который отвечает за подкл. к бд и выбор таблиц.
Код:
public class MySQL
{
private Connection connection = null;
private Statement statement = null;
private ResultSet resultSet = null;
private String host;
private int port;
private String database;
private String username;
private String password;
private String tableName;
public MySQL(String host, int port, String database, String username, String password, String tableName)
{
this.host = host;
this.port = port;
this.database = database;
this.username = username;
this.password = password;
this.tableName = tableName;
connect();
}
public void connect() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
this.connection = DriverManager.getConnection("jdbc:mysql://" + this.host +
":" + this.port + "/" + this.database + "?" + "user=" + this.username +
"&password=" + this.password);
this.statement = this.connection.createStatement(1004, 1008);
String query = "CREATE TABLE IF NOT EXISTS " + this.tableName + "(id INT NOT NULL AUTO_INCREMENT ,nickname VARCHAR(45) NOT NULL ,item_id VARCHAR(100) NOT NULL ,item_amount VARCHAR(11) NOT NULL,PRIMARY KEY (`id`))";
this.statement.execute(query);
} catch (Exception e) {
System.out.println("[MySQL] Can't connect to database!");
System.out.println(e);
}
}
void close() {
try {
if (this.resultSet != null) {
this.resultSet.close();
}
if (this.statement != null) {
this.statement.close();
}
if (this.connection != null)
this.connection.close();
}
catch (Exception localException)
{
}
}
public void buy(Player pl) {
String player = pl.getName();
String query = "SELECT id,item_id,item_amount FROM " + this.tableName + " WHERE nickname='" + player + "'";
try {
if (this.connection.isClosed()) {
connect();
}
ResultSet rs = this.statement.executeQuery(query);
while (rs.next()) {
String kit = rs.getString(2) + " " + rs.getString(3);
if (kit != null) {
int count = 1;
String[] arry = kit.split(" ");
if (arry.length > 1) {
try {
count = Integer.parseInt(arry[1]);
} catch (NumberFormatException e) {
continue;
}
}
kit = arry[0];
int ret = Shop.GetItems(pl, kit, count);
if (ret == -1) {
System.out.println("Add items to the player failed!");
}
else if (ret == 0) {
rs.deleteRow();
}
else {
rs.updateString("item_id", kit + " " + ret);
rs.updateRow();
}
}
}
} catch (SQLException e) {
pl.sendMessage("Произошла ошибка, сообщите администратору!");
System.out.println("[MySQL] Unable to get player's buys!");
System.out.println(e.getMessage());
}
}
}