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("输入的不是整数,删除失败"); } } }