Witam, mam taki kod:
package com.chumanista.youtube;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
public class MysqlManager {
private static Connection con;
public static void checkTable() {
openConnection();
String tbName = UserDataCollector.getPlugin().getConfig().getString("mysqlTableName");
StringBuilder sb = new StringBuilder();
sb.append("create table if not exists ");
sb.append(tbName);
sb.append("(");
sb.append("uuid varchar(100) not null,");
sb.append("name varchar(50) not null,");
sb.append("ip varchar(50) not null,");
sb.append("money double not null,");
sb.append("primary key (uuid));");
try {
con.createStatement().executeUpdate(sb.toString());
} catch (SQLException e) {
e.printStackTrace();
}
closeConnection();
}
public static synchronized void openConnection() {
if (!isConnected()) {
try {
String host = UserDataCollector.getPlugin().getConfig().getString("mysqlHost");
String user = UserDataCollector.getPlugin().getConfig().getString("mysqlUser");
String pass = UserDataCollector.getPlugin().getConfig().getString("mysqlPass");
String dbname = UserDataCollector.getPlugin().getConfig().getString("mysqlDatabaseName");
String port = UserDataCollector.getPlugin().getConfig().getString("mysqlPort");
con = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + dbname + "?user=" + user + "&password=" + pass);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static synchronized void closeConnection() {
if (isConnected()) {
try {
con.close();
} catch (SQLException e) {
}
}
}
public static void saveData(Player p) {
openConnection();
checkTable();
String tbName = UserDataCollector.getPlugin().getConfig().getString("mysqlTableName");
StringBuilder sb = new StringBuilder();
sb.append("select * from `" + tbName + "` where name=" + '"' + p.getName() + '"');
try {
ResultSet rs = con.createStatement().executeQuery(sb.toString());
if (!rs.next()) {
StringBuilder insert = new StringBuilder();
insert.append("insert into `");
insert.append(tbName);
insert.append("` values(");
insert.append('"');
insert.append(p.getUniqueId().toString());
insert.append('"');
insert.append(", ");
insert.append('"');
insert.append(p.getName());
insert.append('"');
insert.append(", ");
insert.append('"');
insert.append(p.getAddress().getAddress().toString().replace("/", ""));
insert.append('"');
insert.append(", ");
insert.append(UserDataCollector.getEconomy().getBalance(p.getName()));
insert.append(")");
con.createStatement().executeUpdate(insert.toString());
closeConnection();
p.sendMessage(ChatColor.GRAY + "" + ChatColor.BOLD + "[" + ChatColor.AQUA + "UserDataCollector" + ChatColor.GRAY + "] " + ChatColor.GOLD + "Twoje dane zostaly zapisanie!");
return;
}
StringBuilder update = new StringBuilder();
update.append("update `");
update.append(tbName);
update.append("` set uuid=");
update.append('"');
update.append(p.getUniqueId().toString());
update.append('"');
update.append(", name=");
update.append('"');
update.append(p.getName());
update.append('"');
update.append(", ");
update.append("ip=");
update.append('"');
update.append(p.getAddress().getAddress().toString().replace("/", ""));
update.append('"');
update.append(", ");
update.append("money=");
update.append(UserDataCollector.getEconomy().getBalance(p.getName()));
update.append(" where name=");
update.append('"');
update.append(p.getName());
update.append('"');
con.createStatement().executeUpdate(update.toString());
closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
closeConnection();
}
public static void loadData() {
}
public static Connection getCon() {
return con;
}
public static boolean isConnected() {
if(con == null) return false;
try {
if(con.isClosed()) return false;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
}
Jak zmodyfikować go tak, abym mógł co sekundę wysyłać połączenie mysql jednocześnie nie mając błędu o too many connections?