JDBC工具类,简化JDBC编程
本篇供个人学习使用,有问题欢迎讨论
一、配置JDBC的代码驱动
首先,在编写JDBC工具类前,我们得先配置JDBC的代码驱动。
不会配置的可以看我的另一篇博客,IDEA的JDBC代码配置驱动
二、创建属性配置文件
其次,我们创建一个属性配置文件,里面存放着连接SqlServer的一系列命令。在编写程序时会用到资源绑定器来绑定属性配置文件,实现程序的低耦合度,后期只需修改属性配置文件中的命令即可。
注意:属性配置文件必须以properties结尾,且存储在src源目录下
三、编写JDBC工具类
将JDBC规范下相关对象【创建】与【销毁功能】封装到方法
- 注册数据库服务器提供的 Driver 接口实现类
- 创建一个连接通道交给 Connection 接口的实例对象【Connection】管理
- 创建一个交通工具交给 PreparedStatement 接口的实例对象【PreparedStatement】管理
- 由交通工具在Java工程与数据库服务器之间进行传输,推送SQL命令并带回执行结果
- 交易结束后,销毁相关资源【Connection,PreparedStatement,ResultSet】
public class JDBCUtil(){
//类文件属性,可以在类文件所有的方法中使用
private Connection conn = null;
private PreparedStatement ps = null;
/**
* 在当前类文件第一次被加载到JVM时,JVM将会自动调用当前类文件静态语句块
*/
static {
//1. 注册数据库服务器提供的Driver接口实现类
try{
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
String driver = bundle.getString("driver");
Class.forName(driver);
}catch(ClassNotFoundException e){
e.printStackTrace();
}
}
/**
* 封装Connection对象创建细节
* @return 数据库连接的对象
*/
//这里我们选择抛出异常,而不是自行内部处理。是让调用此方法的人知道出现异常时的控制台出现的异常信息
public Connection creatConnection() throws SQLException {
//采用资源绑定器来绑定属性配置文件
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
String url = bundle.getString("url");
String username = bundle.getString("username");
String password = bundle.getString("password");
//2. 创建一个连接通道交给Connection接口的实例对象【Connection】管理
conn = DriverManager.getConnection(url,username,password);
return conn;
}
/**
* 封装PreparedStatement对象创建细节
* @param sql sql语句
* @return
*/
public PreparedStatement createStatement(String sql) throws SQLException {
Connection conn = creatConnection();
//3. 创建一个交通工具交给 PreparedStatement 接口的实例对象【PreparedStatement】管理
ps = conn.prepareStatement(sql);
//4. 由交通工具在Java工程与数据库服务器之间进行传输,推送SQL命令并带回执行结果
return ps;
}
/**
* 封装PreparedStatement与Connection对象销毁细节
*/
public void close(){
if (ps != null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 封装PreparedStatement与Connection与ResultSet对象销毁细节
* @param rs 查询结果集
*/
public void close(ResultSet rs){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
close();
}
}
对JDBC工具类的测试:
public class Test01 {
public static void main(String[] args) {
//创建JDBC工具类对象
JdbcUtil util = new JdbcUtil();
PreparedStatement ps = null;
ResultSet rs = null;
try {
String sql = "select 员工姓名,员工职位,员工工资 from 员工信息表 where 员工职位 = ?";
//这里由于在工具类中是抛出异常的,那么在调用时再抛出异常给JVM虚拟机就显然不太合理了,此时我们选择try...catch...内部处理
ps = util.createStatement(sql);
ps.setString(1,"大堂经理");
rs = ps.executeQuery();
while (rs.next()){
System.out.println(rs.getString("员工姓名") + rs.getString("员工职位") +
rs.getString("员工工资"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
//在finally语句块中的语句必定执行
util.close(rs);
}
}
}
查看结果: