JDBC工具类的封装

JDBC工具类,简化JDBC编程

本篇供个人学习使用,有问题欢迎讨论

一、配置JDBC的代码驱动

首先,在编写JDBC工具类前,我们得先配置JDBC的代码驱动。
不会配置的可以看我的另一篇博客,IDEA的JDBC代码配置驱动

二、创建属性配置文件

其次,我们创建一个属性配置文件,里面存放着连接SqlServer的一系列命令。在编写程序时会用到资源绑定器来绑定属性配置文件,实现程序的低耦合度,后期只需修改属性配置文件中的命令即可
在这里插入图片描述
注意:属性配置文件必须以properties结尾,且存储在src源目录下
在这里插入图片描述

三、编写JDBC工具类

将JDBC规范下相关对象【创建】与【销毁功能】封装到方法

  1. 注册数据库服务器提供的 Driver 接口实现类
  2. 创建一个连接通道交给 Connection 接口的实例对象【Connection】管理
  3. 创建一个交通工具交给 PreparedStatement 接口的实例对象【PreparedStatement】管理
  4. 由交通工具在Java工程与数据库服务器之间进行传输,推送SQL命令并带回执行结果
  5. 交易结束后,销毁相关资源【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);
        }
    }
}

查看结果:
在这里插入图片描述

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值