一、操作MySQL数据库
已封装好 可直接导入使用
1 import org.testng.annotations.Test; 2 3 import java.sql.*; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 /** 8 * @author 9 * @version 1.0 10 * @time 2020/1/6 16:30 11 */ 12 public class Data { 13 // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL 14 static private String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 15 static private String DB_URL = "jdbc:mysql://数据库IP:3306/库"; 16 17 // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL 18 // static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; 19 // static final String DB_URL = "jdbc:mysql://数据库IP:3306/RUNOOB?useSSL=false&serverTimezone=UTC"; 20 21 // 数据库的用户名与密码,需要根据自己的设置 22 static private String USER = "账号"; 23 static private String PASS = "密码"; 24 25 /** 26 * 更新数据(增、删、改) 27 * 28 * @param updatesSql sql语句 29 */ 30 public static void dataUpdate(List<String> updatesSql) { 31 Connection conn = null; 32 Statement stmt = null; 33 try { 34 // step1 注册 JDBC 驱动 35 Class.forName(JDBC_DRIVER); 36 37 // step2 连接数据库 返回一个指针 用于操作数据库 38 conn = DriverManager.getConnection(DB_URL, USER, PASS); 39 40 // step3 创建一个实例化对象 返回一个对象指针 用于执行sql语句 41 stmt = conn.createStatement(); 42 43 // step4 执行sql语句 44 String sql = ""; 45 int rs = 0; 46 for (int i = 0; i < updatesSql.size(); i++) { 47 sql = updatesSql.get(i); 48 rs = stmt.executeUpdate(sql); 49 System.out.println(String.format("执行第 %s 条sql:%s", i + 1, sql)); 50 } 51 52 // step5 关闭所有指针 53 stmt.close(); 54 conn.close(); 55 } catch (SQLException se) { 56 // 处理 JDBC 错误 57 se.printStackTrace(); 58 } catch (Exception e) { 59 // 处理 Class.forName 错误 60 e.printStackTrace(); 61 } finally { 62 // 关闭资源 63 try { 64 if (stmt != null) stmt.close(); 65 } catch (SQLException se2) { 66 }// 什么都不做 67 try { 68 if (conn != null) conn.close(); 69 } catch (SQLException se) { 70 se.printStackTrace(); 71 } 72 } 73 System.out.println("Goodbye!"); 74 } 75 76 /** 77 * 查询数据(查) 78 * 79 * @param searchSql sql语句 80 * @return 返回查询后的结果(每一行、每一列) 81 */ 82 public static List<ArrayList> dataSearch(String searchSql) { 83 List<ArrayList> resultList = new ArrayList<>(); 84 85 Connection conn = null; 86 Statement stmt = null; 87 try { 88 // step1 注册 JDBC 驱动 89 Class.forName(JDBC_DRIVER); 90 91 // step2 连接数据库 返回一个指针 用于操作数据库 92 conn = DriverManager.getConnection(DB_URL, USER, PASS); 93 94 // step3 创建一个实例化对象 返回一个对象指针 用于执行sql语句 95 stmt = conn.createStatement(); 96 97 // step4 执行sql语句 98 String sql = searchSql; 99 ResultSet resultSet = stmt.executeQuery(sql); 100 System.out.println(String.format("查询后的结果总列数:%s", resultSet.getMetaData().getColumnCount())); 101 int columnCount = resultSet.getMetaData().getColumnCount(); 102 System.out.println(String.format("查询后的结果总列数:%s", columnCount)); 103 104 while (resultSet.next()) { 105 System.out.println(resultSet.getObject(1)); 106 ArrayList result = new ArrayList(); 107 // 组装一行数据 108 for (int i = 0; i < columnCount; i++) { 109 result.add(resultSet.getObject(i + 1)); 110 } 111 resultList.add(result); 112 113 } 114 115 // step5 关闭所有指针 116 stmt.close(); 117 conn.close(); 118 } catch (SQLException se) { 119 // 处理 JDBC 错误 120 se.printStackTrace(); 121 } catch (Exception e) { 122 // 处理 Class.forName 错误 123 e.printStackTrace(); 124 } finally { 125 // 关闭资源 126 try { 127 if (stmt != null) stmt.close(); 128 } catch (SQLException se2) { 129 }// 什么都不做 130 try { 131 if (conn != null) conn.close(); 132 } catch (SQLException se) { 133 se.printStackTrace(); 134 } 135 } 136 System.out.println("Goodbye!"); 137 138 return resultList; 139 } 140 141 @Test 142 public void test() { 143 String sql = "sql查询语句"; 144 List<ArrayList> arrayLists = dataSearch(sql); 145 for (int i = 0; i < arrayLists.size(); i++) { 146 System.out.println(String.format("第%s行数据:%s", i, arrayLists.get(i))); 147 } 148 } 149 }