目的:
使用jdbc操作数据库,需要进行频繁的注册驱动,获取连接,关流等操作。为了解决这一重复操作,我们封装一个jdbc工具类,把重复操作封装为一个方法,使用时直接调用方法
代码逻辑:
新建一个工具类
类中两个方法 抽取连接和释放资源
把方法定义为静态方法,和类同级,不需创建对象即可直接调用
定义配置文件,把url,driver,user,password属性值传入
1、配置文件
配置文件写在src下面
创发方法:文件名.properties
此处为:jdbc.properties
url=jdbc:mysql://localhost:3306/day1
user=root
password=root
driver=com.mysql.jdbc.Driver
2、工具类
主要封装两个方法:获取数据连接和关流
package cn.cfg.util;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
/**
* @Author: 陈福国
*/
public class JdbcUtil {
//静态变量才能被静态方法访问
private static String user;
private static String url;
private static String password;
private static String driver;
//读取配置文件
static {
//读取资源文件 获得值
try {
//类加载器 就可以获得src下的文件内容
ClassLoader classLoader = JdbcUtils.class.getClassLoader();
URL url1 = classLoader.getResource("jdbc.properties");
String path = url1.getPath();
//1、创建properties 集合类
Properties pro = new Properties();
//2.加载文件
pro.load(new FileInputStream("path"));
//获取值 赋值
url = pro.getProperty("url");
driver = pro.getProperty("driver");
user = pro.getProperty("user");
password = pro.getProperty("password");
} catch (IOException e) {
e.printStackTrace();
}
}
//抽取获取连接的方法
public static Connection getConnection(){
Connection conn = null;
try {
//注册驱动
Class.forName(driver);
//获取连接
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
//关流的方法
public static void close(ResultSet rs, Statement stm,Connection conn){
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stm!=null){
try {
stm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3、测试工具类
package cn.cfg.jdbc.fengzhuang;
import cn.cfg.util.JdbcUtil;
import java.sql.*;
/**
* @Author: 陈福国
*/
public class TestJdbcUtil {
public static void main(String[] args) {
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getConnection();
stat = conn.createStatement();
String sql = "select * from user";
rs = stat.executeQuery(sql);
while (rs.next()){
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
System.out.println(id+"-"+username+"-"+password);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtil.close(rs,stat,conn);
}
}
}