package com.dengyu.mysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.bukkit.command.CommandSender;
public class MySQLManager {
private String ip;
private String databaseName;
private String userName;
private String userPassword;
private Connection connection;
private int port;
public static MySQLManager instance = null;
public static MySQLManager get() {
return instance == null ? instance = new MySQLManager() : instance;
}
public void enableMySQL()
{
ip = Main.getConfigString("mysql.ip");
databaseName = Main.getConfigString("mysql.databasename");
userName = Main.getConfigString("mysql.username");
userPassword = Main.getConfigString("mysql.password");
port = Main.getConfigInt("mysql.port");
connectMySQL();
String cmd = SQLCommand.CREATE_TABLE1.commandToString();
try {
PreparedStatement ps = connection.prepareStatement(cmd);
doCommand(ps);
} catch (SQLException e) {
e.printStackTrace();
}
}
private void connectMySQL()
{
try {
connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":" + port + "/" + databaseName + "?autoReconnect=true", userName, userPassword);
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public void doCommand(PreparedStatement ps)
{
try {
ps.executeUpdate();
} catch (SQLException e) {
System.out.println("执行指令失败,以下为错误提示");
e.printStackTrace();
}
}
public void shutdown() {
try {
connection.close();
} catch (SQLException e) {
//断开连接失败
e.printStackTrace();
}
}
public void insertData(String data1, String data2) {
try {
PreparedStatement ps;
String s = SQLCommand.ADD_DATA.commandToString();
ps = connection.prepareStatement(s);
ps.setInt(1, Integer.parseInt(data1));
ps.setString(2, data2);
doCommand(ps);
} catch (SQLException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
System.out.println("输入的不是整数,插入失败");
}
}
public void deleteData(String data1) {
try {
PreparedStatement ps;
String s = SQLCommand.DELETE_DATA.commandToString();
ps = connection.prepareStatement(s);
ps.setInt(1, Integer.parseInt(data1));
doCommand(ps);
} catch (SQLException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
System.out.println("输入的不是整数,删除失败");
}
}
public void findData(String data1, CommandSender sender) {
try {
String s = SQLCommand.SELECT_DATA.commandToString();
PreparedStatement ps = connection.prepareStatement(s);
ps.setInt(1, Integer.parseInt(data1));
ResultSet rs = ps.executeQuery(s);
while (rs.next())
{
String str = rs.getString("string");
sender.sendMessage(str);
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
sender.sendMessage("查询失败");
} catch (NumberFormatException e) {
System.out.println("输入的不是整数,删除失败");
}
}
}