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

  

posted @ 2021-06-25 15:58  yub4by  阅读(64)  评论(0编辑  收藏  举报