JDBC(三) 封装工具类

1. 为什么要封装JDBC工具类:减少重复代码、提高代码复用性、简化数据库操作、统一管理数据库连接、便于维护和修改
2.封装工具类的简单示例代码:

package com.study.jdbc;
import java.sql.*;
import java.util.ResourceBundle
/*

* */
/**
 * 工具类的构造方法一般是私有化的,因为工具类中的一般是静态的,
 * 工具类就是为了方便变成,所以工具类中的方法都是直接采用类名
 * 的方式访问,因此不需要new对象
 * @param 
 * @return 
 */
public class DBUtils {
    private DBUtils() {}
    private static String driver;
    private static String url;
    private static String user;
    private static String password;
    static {
        // 在这里读取属性配置文件,给静态变量赋值
        ResourceBundle bundle = ResourceBundle.getBundle("com.study.jdbc.jdbc");
        driver = bundle.getString("driver");
        url = bundle.getString("url");
        user = bundle.getString("user");
        password = bundle.getString("password");
        // 在类加载的时候 注册驱动,对于整个应用程序来说,注册驱动只需要做一次即可,所以选择静态代码块
        // 静态代码块在类加载时执行, 并且只执行一次
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
    /*
    * 获取数据库连接对象
    * */
    public static Connection getConnection() throws SQLException {
        Connection conn = DriverManager.getConnection(url,user,password);
        return conn;
    }

    /**
     * 释放连接资源
     *  @param conn 连接对象
     *  @param stmt 数据库操作对象
     *  @param rs 结果集对象
     */
    public static void close(Connection conn, Statement stmt, ResultSet rs){
        // 确保在程序结束时关闭数据库连接
        if (rs != null) {
            try {
                // 关闭数据库连接
                conn.close();
            } catch (SQLException e) {
                // 处理关闭连接时可能发生的 SQL 异常
                throw new RuntimeException(e);
            }
        }
        if (stmt != null) {
            try {
                // 关闭数据库连接
                conn.close();
            } catch (SQLException e) {
                // 处理关闭连接时可能发生的 SQL 异常
                throw new RuntimeException(e);
            }
        }
        if (conn != null) {
            try {
                // 关闭数据库连接
                conn.close();
            } catch (SQLException e) {
                // 处理关闭连接时可能发生的 SQL 异常
                throw new RuntimeException(e);
            }
        }
    }
}

3.使用工具类的简单示例代码:

package com.study.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JDBC_actionMod {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;

        try {
            // 1. 注册驱动
            // 2. 获取连接
            conn = DBUtil.getConnection();  // TODO 通过工具类获取连接
            // 3.获取预编译的数据库操作对象
            String sql = "update emp set ename=?, job=?,sal=? where empno=?";
            ps = conn.prepareStatement(sql);
            ps.setString(1, "李四修改2");
            ps.setString(2, "产品经理");
            ps.setDouble(3, 5000.0);
            ps.setInt(4, 12);
            // 4. 执行sql语句
            int count = ps.executeUpdate();
            // 5. 处理结果
            System.out.println("修改了" + count + "条记录");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally {

            // 6.释放资源
            DBUtil.close(conn,ps, null);  // TODO 通过工具类关闭资源
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容