JavaWeb5.4【JDBC:工具類JDBCUtils】
阿新 • • 發佈:2021-06-25
1 package com.yub4by.util; 2 3 import java.io.FileReader; 4 import java.io.IOException; 5 import java.net.URL; 6 import java.sql.Connection; 7 import java.sql.DriverManager; 8 import java.sql.ResultSet; 9 import java.sql.Statement; 10 import java.sql.SQLException; 11 import java.util.Properties;12 13 /* 14 * 目的:簡化書寫 15 * 分析: 16 1. 註冊驅動也抽取 17 2. 抽取一個方法獲取連線物件 18 * 需求:不想傳遞引數(麻煩),還得保證工具類的通用性。 19 * 解決:配置檔案(src目錄下) 20 jdbc.properties 21 url= 22 user= 23 password= 24 3. 抽取一個方法釋放資源 25 */ 26 /** 27* JDBC工具類 28 */ 29 public class JDBCUtils { 30 //靜態成員變數才能夠被靜態程式碼塊和靜態成員方法所訪問 31 private static String url; 32 private static String user; 33 private static String password; 34 private static String driver; 35 36 /** 37 * 讀取配置檔案,獲取值 38 * 檔案的讀取,只需要讀取一次即可拿到這些值。使用靜態程式碼塊39 */ 40 static { 41 try { 42 //1 建立Properties集合類 43 Properties prop = new Properties(); 44 //2 載入檔案 45 //2.1 獲取src路徑下的檔案的方式--->ClassLoader 類載入器 46 ClassLoader classLoader = JDBCUtils.class.getClassLoader(); 47 URL res = classLoader.getResource("jdbc.properties"); 48 String path = res.getPath(); //絕對路徑 49 // System.out.println(path); //D:/Workspace-java/idea/Workspaces/itheima-javaweb/out/production/day05/jdbc.properties 50 prop.load(new FileReader(path)); 51 52 //3 獲取資料,賦值給靜態成員變數 53 url = prop.getProperty("url"); 54 user = prop.getProperty("user"); 55 password = prop.getProperty("password"); 56 driver = prop.getProperty("driver"); 57 58 //4 註冊驅動 59 /*try { 60 Class.forName(driver); 61 } catch (ClassNotFoundException e) { 62 e.printStackTrace(); 63 }*/ 64 Class.forName(driver); 65 } catch (IOException | ClassNotFoundException e) { 66 e.printStackTrace(); 67 } 68 } 69 70 /** 71 * 獲取連線 72 * @return 連線物件 73 */ 74 public static Connection getConnection() throws SQLException { 75 return DriverManager.getConnection(url, user, password); 76 } 77 78 /** 79 * 釋放資源 80 * @param stmt 81 * @param conn 82 */ 83 public static void close(Statement stmt, Connection conn){ 84 85 if (stmt != null){ 86 try { 87 stmt.close(); 88 } catch (SQLException e) { 89 e.printStackTrace(); 90 } 91 } 92 93 if (conn != null){ 94 try { 95 conn.close(); 96 } catch (SQLException e) { 97 e.printStackTrace(); 98 } 99 } 100 101 } 102 103 /** 104 * 釋放資源 105 * @param rs 106 * @param stmt 107 * @param conn 108 */ 109 public static void close(ResultSet rs, Statement stmt, Connection conn){ //過載 110 111 if (rs != null){ 112 try { 113 rs.close(); 114 } catch (SQLException e) { 115 e.printStackTrace(); 116 } 117 } 118 119 if (stmt != null){ 120 try { 121 stmt.close(); 122 } catch (SQLException e) { 123 e.printStackTrace(); 124 } 125 } 126 127 if (conn != null){ 128 try { 129 conn.close(); 130 } catch (SQLException e) { 131 e.printStackTrace(); 132 } 133 } 134 135 } 136 137 }
url=jdbc:mysql://localhost:3306/??? user=??? password=??? driver=com.mysql.jdbc.Driver