由于每次连接数据库进行查询比较麻烦,偶尔还需要将查询结果转为json格式的文件,

因此暂时定义一个mysql的类,将这些常用的方法进行封装,便于直接调用(代码如下,个人用,没写什么注释)。

注:导入了https://github.com/stleary/JSON-java的包。



1 package connmysql;
  2 
  3 import java.io.IOException;
  4 import java.io.InputStream;
  5 import java.sql.Connection;
  6 import java.sql.DriverManager;
  7 import java.sql.PreparedStatement;
  8 import java.sql.ResultSet;
  9 import java.sql.ResultSetMetaData;
 10 import java.sql.SQLException;
 11 import java.util.HashMap;
 12 import java.util.Map;
 13 import java.util.Properties;
 14 
 15 import org.json.JSONObject;
 16 
 17 public class MySql {
 18     /**
 19      * Define database connection method
 20      * 1. Calling Connect(String db) for Pass in the database name
 21      *    that you want to connect to in the MySql. 
 22      * 2. Calling Connect(String db,String sql) for Pass in the 
 23      *    database name that you want to connect to in MySql and 
 24      *    the MySql query command.
 25      * 3. Calling Close() to close the Database connection.
 26      * 4. Calling ToJson(String db,String sql) to print a json list.
 27      * 5. Calling ToJsonObj(String db,String sql) returns a json object
 28      */
 29     
 30     //Defining database connection parameters
 31     public static final String url = "jdbc:mysql://localhost:3306/";
 32     public static final Properties properties = new Properties();
 33     public Connection conn = null;
 34     public PreparedStatement ppst = null;
 35     public JSONObject json = null;
 36     //Defining database connection methods
 37         public void Connect(String db) {
 38             try {
 39                 InputStream input = MySql.class.getClassLoader().getResourceAsStream("connect.properties");
 40                 properties.load(input);
 41                 //New version driver name:com.mysql.cj.jdbc.Driver
 42                 //Old version driver name:com.mysql.jdbc.Driver
 43                 Class.forName("com.mysql.cj.jdbc.Driver");    
 44             } catch (ClassNotFoundException e) {
 45                 // TODO: handle exception
 46                 //System.out.println("Driver loading failed");
 47                 e.printStackTrace();
 48                 return;
 49             } catch (IOException e) {
 50                 //System.out.println("File properties loading failed");
 51                 // TODO Auto-generated catch block
 52                 e.printStackTrace();
 53             }
 54             db = url+db;
 55             try {
 56                 this.conn = DriverManager.getConnection(db, properties);
 57                 //System.out.println("Successful database connection"+this.conn);
 58             } catch (SQLException e) {
 59                 // TODO: handle exception
 60                 //System.out.println("Failed database connection");
 61                 e.printStackTrace();
 62             }
 63         }
 64         
 65     //Defining database connection methods
 66     public void Connect(String db,String sql) {
 67         try {
 68             InputStream input = MySql.class.getClassLoader().getResourceAsStream("connect.properties");
 69             properties.load(input);
 70             Class.forName("com.mysql.cj.jdbc.Driver");    
 71         } catch (ClassNotFoundException e) {
 72             // TODO: handle exception
 73             //System.out.println("Driver loading failed");
 74             e.printStackTrace();
 75             return;
 76         } catch (IOException e) {
 77             //System.out.println("File properties loading failed");
 78             // TODO Auto-generated catch block
 79             e.printStackTrace();
 80         }
 81         db = url+db;
 82         try {
 83             this.conn = DriverManager.getConnection(db, properties);
 84             this.ppst = this.conn.prepareStatement(sql);
 85             //System.out.println("Successful database connection"+this.conn);
 86             //System.out.println("Successful SQL precompiled PreparedStatement"+this.ppst);
 87         } catch (SQLException e) {
 88             // TODO: handle exception
 89             //System.out.println("Failed database connection");
 90             e.printStackTrace();
 91         }
 92     }
 93     
 94     //Close the database connection
 95     public void Close() {
 96         try {
 97             this.conn.close();
 98             //System.out.println("Successful close database connection");
 99         } catch (SQLException e) {
100             // TODO Auto-generated catch block
101             //System.out.println("Failed close database connection");
102             e.printStackTrace();
103         }
104     }
105     public void ToJson(String db,String sql) {
106         if(!(sql.startsWith("select") || sql.startsWith("SELECT"))) {
107             System.out.println("Please pass in a database query statement");
108             return;
109         }
110         MySql mysql = new MySql();
111         JSONObject jsonobj = new JSONObject();
112         ResultSet result = null;
113         try {
114             mysql.Connect(db,sql);
115             result = mysql.ppst.executeQuery();
116             while(result.next()) {
117                 ResultSetMetaData rsmd = result.getMetaData();
118                 Map<String,String> map = new HashMap<>();
119                 for(int i = 1; i <= rsmd.getColumnCount(); i++) {
120                     map.put(rsmd.getColumnLabel(i), result.getString(i));
121                     jsonobj.put(result.getString("id"), map);
122                 }
123             }
124             System.out.println(jsonobj.toString());
125         } catch (SQLException e) {
126             // TODO Auto-generated catch block
127             e.printStackTrace();
128         }
129     }
130     
131     public JSONObject ToJsonObj(String db,String sql) {
132         if(!(sql.startsWith("select") || sql.startsWith("SELECT"))) {
133             System.out.println("Please pass in a database query statement");
134             return (new JSONObject());
135         }
136         MySql mysql = new MySql();
137         JSONObject jsonobj = new JSONObject();
138         ResultSet result = null;
139         try {
140             mysql.Connect(db,sql);
141             result = mysql.ppst.executeQuery();
142             while(result.next()) {
143                 ResultSetMetaData rsmd = result.getMetaData();
144                 Map<String,String> map = new HashMap<>();
145                 for(int i = 1; i <= rsmd.getColumnCount(); i++) {
146                     map.put(rsmd.getColumnLabel(i), result.getString(i));
147                     jsonobj.put(result.getString("id"), map);
148                 }
149             }
150             this.json = jsonobj;
151         } catch (SQLException e) {
152             // TODO Auto-generated catch block
153             e.printStackTrace();
154         }
155         return this.json;
156     }
157 }



测试一:



1 package test;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 
 8 import connmysql.MySql;
 9 
10 public class MysqlTest01 {
11 
12     public static void main(String[] args) {
13         // TODO Auto-generated method stub
14         MySql mysql = new MySql();
15         try {
16             String sql = "INSERT INTO student ( sname, sgender, address ) VALUES ( '孙六', '女', '信阳' )";
17             mysql.Connect("testdb",sql);
18             Connection conn = mysql.conn;
19             PreparedStatement ppst = mysql.ppst;
20             System.out.println("Successful database Insert update\t"+ppst.executeUpdate());
21             sql = "delete from student where sname='孙六'";
22             ppst = conn.prepareStatement(sql);
23             System.out.println("Successful database delete update\t"+ppst.executeUpdate());
24             sql = "update student set sname=? where sname=?";
25             ppst = conn.prepareStatement(sql);
26             ppst.setString(1,"张三丰");
27             ppst.setString(2,"张三");
28             System.out.println("Successful database update\t"+ppst.executeUpdate());
29             sql = "select id, sname from student";
30             ppst = mysql.conn.prepareStatement(sql);
31             ResultSet result=ppst.executeQuery();
32             while (result.next()) {
33                 System.out.printf("id:%d sanme:%s\n", result.getInt(1),result.getString(2));
34             }
35             System.out.println("Successful database select");
36             mysql.Close();
37         } catch (SQLException e) {
38             // TODO: handle exception
39             e.printStackTrace();
40         }
41     }
42 /*    Successful database connectioncom.mysql.cj.jdbc.ConnectionImpl@13acb0d1
43     Successful SQL precompiled PreparedStatementcom.mysql.cj.jdbc.ClientPreparedStatement: INSERT INTO student ( sname, sgender, address ) VALUES ( '孙六', '女', '信阳' )
44     Successful database Insert update    1
45     Successful database delete update    2
46     Successful database update    0
47     id:1 sanme:张三丰
48     id:2 sanme:李四
49     id:3 sanme:王五
50     id:5 sanme:张三丰
51     id:6 sanme:李四
52     id:7 sanme:王五
53     Successful database select
54     Successful close database connection*/
55 }



测试二:



1 package test;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 
 8 import connmysql.MySql;
 9 
10 public class MysqlTest02 {
11 
12     public static void main(String[] args) {
13         // TODO Auto-generated method stub
14         MySql mysql = new MySql();
15         try {
16             mysql.Connect("testdb","sql");
17             Connection conn = mysql.conn;
18             String sql = "INSERT INTO student ( sname, sgender, address ) VALUES ( '孙六', '女', '信阳' )";
19             PreparedStatement ppst = conn.prepareStatement(sql);
20             System.out.println("Successful database Insert update\t"+ppst.executeUpdate());
21             sql = "delete from student where sname='孙六'";
22             ppst = conn.prepareStatement(sql);
23             System.out.println("Successful database delete update\t"+ppst.executeUpdate());
24             sql = "update student set sname=? where sname=?";
25             ppst = conn.prepareStatement(sql);
26             ppst.setString(1,"张三丰");
27             ppst.setString(2,"张三");
28             System.out.println("Successful database update\t"+ppst.executeUpdate());
29             sql = "select id, sname from student";
30             ppst = mysql.conn.prepareStatement(sql);
31             ResultSet result=ppst.executeQuery();
32             while (result.next()) {
33                 System.out.printf("id:%d sanme:%s\n", result.getInt(1),result.getString(2));
34             }
35             System.out.println("Successful database select");
36             mysql.Close();
37         } catch (SQLException e) {
38             // TODO: handle exception
39             e.printStackTrace();
40         }
41     }
42 /*    Successful database connectioncom.mysql.cj.jdbc.ConnectionImpl@b62fe6d
43     Successful SQL precompiled PreparedStatementcom.mysql.cj.jdbc.ClientPreparedStatement: sql
44     Successful database Insert update    1
45     Successful database delete update    1
46     Successful database update    0
47     id:1 sanme:张三丰
48     id:2 sanme:李四
49     id:3 sanme:王五
50     id:5 sanme:张三丰
51     id:6 sanme:李四
52     id:7 sanme:王五
53     Successful database select
54     Successful close database connection*/
55 }



测试三:



1 package test;
 2 
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 import java.io.OutputStream;
 7 
 8 import connmysql.MySql;
 9 
10 public class MysqlTest03 {
11 
12     public static void main(String[] args) {
13         // TODO Auto-generated method stub
14         String sql = "select id, sname from student";
15         // 使用一个Stream对象接收成员变量json的String返回即可写入本地文件。
16         MySql mysql = new MySql();
17         System.out.println("ToJson method print");
18         mysql.ToJson("testdb", sql);
19         System.out.println("ToJsonObj method print");
20         mysql.ToJsonObj("testdb", sql);
21         System.out.println(mysql.json.toString());
22         File file = new File("TestDir/des.json");
23         try {
24             if (!file.exists()) {
25                 file.createNewFile();
26             }
27             String str = mysql.json.toString();
28             byte[] buffer = str.getBytes();
29             OutputStream out = new FileOutputStream(file);
30             out.write(buffer, 0, buffer.length);
31             System.out.println("Written to local JSON file");
32             out.close();
33         } catch (IOException e) {
34             // TODO Auto-generated catch block
35             e.printStackTrace();
36         }
37     }
38 /*    ToJson method print
39     {"1":{"sname":"张三丰","id":"1"},"2":{"sname":"李四","id":"2"},"3":{"sname":"王五","id":"3"},"5":{"sname":"张三丰","id":"5"},"6":{"sname":"李四","id":"6"},"7":{"sname":"王五","id":"7"}}
40     ToJsonObj method print
41     {"1":{"sname":"张三丰","id":"1"},"2":{"sname":"李四","id":"2"},"3":{"sname":"王五","id":"3"},"5":{"sname":"张三丰","id":"5"},"6":{"sname":"李四","id":"6"},"7":{"sname":"王五","id":"7"}}
42     Written to local JSON file*/
43 }



connect.properties文件:



#Mysql
user=""
password=""
useSSL=false
serverTimezone=UTC
verifyServerCertifate=false



des.json文件:



{"1":{"sname":"张三丰","id":"1"},"2":{"sname":"李四","id":"2"},"3":{"sname":"王五","id":"3"},"5":{"sname":"张三丰","id":"5"},"6":{"sname":"李四","id":"6"},"7":{"sname":"王五","id":"7"}}