package com.wangjue.util;import java.io.IOException;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 DBUtil {private static Connection conn = null;private static Properties pro = new Properties();//加载驱动,使用静态块,只需要加载一次static {try {/** * 加载配置文件的两种方法,任选一种都可以 *///pro.load(DBUtil.class.getResourceAsStream("/DBUtil.properties"));pro.load(DBUtil.class.getClassLoader().getResourceAsStream("DBUtil.properties"));String DRIVER = pro.getProperty("DRIVER");Class.forName(DRIVER);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}//获取Connection连接对象的方法,使用static方便之后在其他类中调用public static Connection getConn() {try {conn = DriverManager.getConnection(pro.getProperty("URL"),pro.getProperty("USER"),pro.getProperty("PWD"));} catch (SQLException e) {e.printStackTrace();}return conn;}//关闭资源的方法public static void close(ResultSet rs,PreparedStatement ps,Connection conn) {if(rs!=null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(ps!=null) {try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}
总结:
1、创建一个这样的工具类,可以做为dao层使用,用类名.方法名直接调用
2、加载配置文件时ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别
我的文件结构是:src--》包--》DBUTil工具类
--》配置文件
Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致,我将配置文件放在src下,因此使用这个方法加入/,表示从classpath的根路径(src)下开始查找
因此:使用这个方法的相对路径是:
pro.load(DBUtil.class.getResourceAsStream("/DBUtil.properties"))
ClassLoader.getResourceAsStream() 无论要查找的资源前面是否带'/' 都会从classpath的根路径下查找
因此:使用这个方法的相对路径是:
pro.load(DBUtil.class.getClassLoader().getResourceAsStream("DBUtil.properties"))