· 10 years ago · Jul 13, 2016, 07:48 AM
1public class DatabaseUtil {
2
3 private static HashMap<String, Long> coins = new HashMap<String, Long>();
4 private static HashMap<String, Boolean> exists = new HashMap<String, Boolean>();
5 private static String url = "jdbc:mysql://127.0.0.1/sys?user=root&password=Aa14&useUnicode=true&characterEncoding=UTF8";
6 private static Connection co = null;
7 public static String table = "Test";
8
9 public static void connectMySQL(){
10 try{
11 Class.forName("com.mysql.jdbc.Driver");
12 co = DriverManager.getConnection(url);
13 }catch(Exception e){
14 e.printStackTrace();
15 System.out.println("Failed to connect");
16 }
17 }
18 public static void closeConnect(){
19 try{
20 if(co.isClosed()){
21 return;
22 }
23 co.close();
24 }catch(Exception e){
25 e.printStackTrace();
26 System.out.println("Failed to close connection, Please redo");
27 }
28 }
29 public static void reloadConnect(){
30 try{
31 if(co == null){
32 closeConnect();
33 connectMySQL();
34 }
35 }catch(Exception e){
36 e.printStackTrace();
37 System.out.println("Failed to reload connection");
38 }
39 }
40
41 public static Boolean createTable(String Table){
42 String sqlcode = "create table Name(Player varchat(255) auto_increment primary key, Coins int(255))".replace("Name", Table);
43 try{
44 if(co == null || co.isClosed()){
45 connectMySQL();
46 }
47 if(tableExit(Table) != true){
48 System.out.println("creating a new table called " + Table);
49 Statement s = co.createStatement();
50 int result = s.executeUpdate(sqlcode);
51 if(result != -1){
52 System.out.println("create table successful");
53 return Boolean.valueOf(true);
54 }
55 }
56 }catch(Exception e){
57 e.printStackTrace();
58 System.out.println("Failed to create table on MySQL");
59 }finally{
60 closeConnect();
61 }
62 return Boolean.valueOf(false);
63}
64 public static boolean tableExit(String Table){
65 try{
66 if(co == null){
67 connectMySQL();
68 }
69 DatabaseMetaData meta = co.getMetaData();
70 ResultSet rsTables = meta.getTables(null, null, Table, null);
71 if (rsTables.next()) {
72 return Boolean.valueOf(true);
73 }
74 System.out.println("have not found table exit");
75 return Boolean.valueOf(false);
76 }catch (Exception e){
77 e.printStackTrace();
78 System.out.println("Failed to check table");
79 return Boolean.valueOf(false);
80 }finally{
81 closeConnect();
82 }
83 }
84 public static boolean coinExists(String name){
85 String sqlcode = "select * from Test where Player = ?";
86 if(co == null){
87 connectMySQL();
88 }
89 try{
90 PreparedStatement p = co.prepareStatement(sqlcode);
91 p.setString(1, name);
92 ResultSet rs = p.executeQuery();
93 if (rs.next()) {
94 exists.put(name, Boolean.valueOf(true));
95 }else{
96 exists.put(name, Boolean.valueOf(false));
97 }
98 }catch(Exception e){
99 e.printStackTrace();
100 System.out.println("Failed to check coin exit");
101 exists.put(name, Boolean.valueOf(false));
102 }finally{
103 closeConnect();
104 }
105 return ((Boolean)exists.get(name)).booleanValue();
106 }
107 public static long getCoins(String name){
108 String sqlcode = "select * from Test where Player = ?";
109 if(co == null){
110 connectMySQL();
111 }
112 if (!coinExists(name)) {
113 return 0L;
114 }
115 try{
116 PreparedStatement p = co.prepareStatement(sqlcode);
117 p.setString(1, name);
118 ResultSet rs = p.executeQuery();
119 if(rs.next()){
120 coins.put(name, Long.valueOf(rs.getLong("Coins")));
121 }
122 }catch(Exception e){
123 e.printStackTrace();
124 System.out.println("Failed to get coins for +" + name);
125 coins.put(name, Long.valueOf(0L));
126 }finally{
127 closeConnect();
128 }
129 return ((Long)coins.get(name)).longValue();
130 }
131 public static void setCoins(String name, long money){
132 String sqlcode = "insert into Test(Player, Coins) VALUES (?, ?)";
133 if(co == null){
134 connectMySQL();
135 }
136 try{
137 deleteBank(name);
138 PreparedStatement p = co.prepareStatement(sqlcode);
139 p.setString(1, name);
140 p.setLong(2, money);
141 p.executeUpdate();
142 }catch(Exception e){
143 e.printStackTrace();
144 System.out.println("Failed to set coins for " + name);
145 }finally{
146 closeConnect();
147 }
148 }
149 public static void deleteBank(String name){
150 String sqlcode = "delete * from Test where Player = ?";
151 if(co == null){
152 connectMySQL();
153 }
154 if (!coinExists(name)) {
155 return;
156 }
157 try{
158 PreparedStatement p = co.prepareStatement(sqlcode);
159 p.setString(1, name);
160 p.executeUpdate();
161 }catch(Exception e){
162 e.printStackTrace();
163 System.out.println("Failed to delete bank");
164 }finally{
165 closeConnect();
166 }
167 }
168
169
170
171}