目的:简化书写

分析:

  1.注册驱动

  2.获取连接对象

  3.释放资源

1.注册驱动

2.获取连接对象

需求:不想传递参数,还能保证工具类的通用性
解决方案:配置文件

创建一个properties对象。调用load方法加载文件或字节流

jdbc.properties

url=jdbc:mysql:///girls
user=root
password=ROOT
driver=com.mysql.jdbc.Driver

3.释放资源

package cn.itcast.util;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties; /**
* jdbc工具类
*/
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String dirver; /*
* 文件的读取,只需要读取一次即可拿到这值。
* 使用静态代码块:因为静态代码块随着类的加载而加载,只会执行一次
* */
static {
//读取配置文件
try {
//1.创建properties集合类。
Properties pro = new Properties(); //获取src路径下的文件的方式--->
// ClassLoader 类加载器:可以加载类的字节码文件进内存
//可以获取src资源文件的路径,要获取ClassLoader需要获取对应的字节码文件的对象
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties");
//url统一资源定位符
String path = res.getPath();
System.out.println(path);
//2.加载文件。只能用try、catch。因为抛需要借助方法,写绝对路径还要改不合适
// pro.load(new FileReader("src/jdbc.properties")); pro.load(new FileReader(path));//加载文件。 //3.获取
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
dirver = pro.getProperty("driver");
//4.注册驱动
Class.forName(dirver);
} catch (IOException e) {
e.printStackTrace();
} 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();
}
}
}
}
05-11 14:04