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 }
1 2 3 4 | url=jdbc:mysql://localhost:3306/??? user =??? password =??? driver=com.mysql.jdbc.Driver |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!