目的:简化代码书写
分析:
1,注册驱动也抽取
2,抽取一个方法获取连接对象
3,抽取一个方法释放资源
在我们使用JDBC 的时候,我们多数的代码都是一样的,这个时候我们就像能不能把相同的代码包装成静态方法给我们使用,这就是我们所谓的JDBC工具类
public class JDBCUtils { private static String url ; private static String user ; private static String password ; private static String driver; static { Properties pro = new Properties(); //这里是通过类加载器获取jdbc.propertise的绝对路径 //首先获取类的加载器,然后通过类的加载器获取src路径下资源的绝对路径 //这里的意思是不管模块如何移植,只要在模块当中,就能通过相对路径找到 //绝对路径 ClassLoader loader = JDBCUtils.class.getClassLoader(); //通过类加载器获取scr路径下的资源的绝对路径 URL res = loader.getResource("JDBC.properties"); //获取绝对路径 String path = res.getPath(); try { pro.load(new FileReader(path)); } catch (IOException e) { e.printStackTrace(); } url = pro.getProperty("url"); user = pro.getProperty("user"); password = pro.getProperty("password"); driver = pro.getProperty("driver"); try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url,user,password); } public static void close(Statement stmt, Connection conn){ if (stmt!=null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(ResultSet rs,Statement stmt, Connection conn){ if (rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt!=null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }