JavaWeb5.4【JDBC:工具类JDBCUtils】
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