DBUtils
1、使用类的加载器来加载database.properties文件流。
2、读取配置文件,获取连接,只执行一次,static{ }
3、JDBCUtils封装类
package cn.itcast.jdbcutils; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; public class JDBCUtils { public static Connection con; private static String driverClass; private static String url; private static String username; private static String password; public JDBCUtils(){}; //定义静态方法,返回数据库的连接对象 static{ try{ readConfig(); // 1注册驱动 Class.forName(driverClass); con = DriverManager.getConnection(url, username, password); }catch(Exception ex){ throw new RuntimeException(ex+" 数据库连接失败!"); } } //获取连接 public static Connection getConnection(){ return con; } private static void readConfig() throws IOException{ // 2、获取配置文件流,读取文件信息,获取连接 //使用类的加载器加载database文件 InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("database.properties"); Properties pro = new Properties(); pro.load(in); //System.out.println(pro); //获取集合中的键值对 String driverClass = pro.getProperty("driverClass"); String url = pro.getProperty("url"); String username = pro.getProperty("username"); String password = pro.getProperty("password"); } public static void close(Connection con,ResultSet rs,PreparedStatement ps){ if(rs != null){ try{ rs.close(); }catch(SQLException ex){} } if(ps != null){ try{ ps.close(); }catch(SQLException ex){} } if(con != null){ try{ con.close(); }catch(SQLException ex){} } } public static void close(Connection con,PreparedStatement ps){ if(ps != null){ try{ ps.close(); }catch(SQLException ex){} } if(con != null){ try{ con.close(); }catch(SQLException ex){} } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?