JDBC(三) 封裝工具類

1. 為什么要封裝JDBC工具類:減少重復(fù)代碼、提高代碼復(fù)用性、簡(jiǎn)化數(shù)據(jù)庫(kù)操作、統(tǒng)一管理數(shù)據(jù)庫(kù)連接、便于維護(hù)和修改
2.封裝工具類的簡(jiǎn)單示例代碼:

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

* */
/**
 * 工具類的構(gòu)造方法一般是私有化的,因?yàn)楣ぞ哳愔械囊话闶庆o態(tài)的,
 * 工具類就是為了方便變成,所以工具類中的方法都是直接采用類名
 * 的方式訪問(wèn),因此不需要new對(duì)象
 * @param 
 * @return 
 */
public class DBUtils {
    private DBUtils() {}
    private static String driver;
    private static String url;
    private static String user;
    private static String password;
    static {
        // 在這里讀取屬性配置文件,給靜態(tài)變量賦值
        ResourceBundle bundle = ResourceBundle.getBundle("com.study.jdbc.jdbc");
        driver = bundle.getString("driver");
        url = bundle.getString("url");
        user = bundle.getString("user");
        password = bundle.getString("password");
        // 在類加載的時(shí)候 注冊(cè)驅(qū)動(dòng),對(duì)于整個(gè)應(yīng)用程序來(lái)說(shuō),注冊(cè)驅(qū)動(dòng)只需要做一次即可,所以選擇靜態(tài)代碼塊
        // 靜態(tài)代碼塊在類加載時(shí)執(zhí)行, 并且只執(zhí)行一次
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
    /*
    * 獲取數(shù)據(jù)庫(kù)連接對(duì)象
    * */
    public static Connection getConnection() throws SQLException {
        Connection conn = DriverManager.getConnection(url,user,password);
        return conn;
    }

    /**
     * 釋放連接資源
     *  @param conn 連接對(duì)象
     *  @param stmt 數(shù)據(jù)庫(kù)操作對(duì)象
     *  @param rs 結(jié)果集對(duì)象
     */
    public static void close(Connection conn, Statement stmt, ResultSet rs){
        // 確保在程序結(jié)束時(shí)關(guān)閉數(shù)據(jù)庫(kù)連接
        if (rs != null) {
            try {
                // 關(guān)閉數(shù)據(jù)庫(kù)連接
                conn.close();
            } catch (SQLException e) {
                // 處理關(guān)閉連接時(shí)可能發(fā)生的 SQL 異常
                throw new RuntimeException(e);
            }
        }
        if (stmt != null) {
            try {
                // 關(guān)閉數(shù)據(jù)庫(kù)連接
                conn.close();
            } catch (SQLException e) {
                // 處理關(guān)閉連接時(shí)可能發(fā)生的 SQL 異常
                throw new RuntimeException(e);
            }
        }
        if (conn != null) {
            try {
                // 關(guān)閉數(shù)據(jù)庫(kù)連接
                conn.close();
            } catch (SQLException e) {
                // 處理關(guān)閉連接時(shí)可能發(fā)生的 SQL 異常
                throw new RuntimeException(e);
            }
        }
    }
}

3.使用工具類的簡(jiǎn)單示例代碼:

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. 注冊(cè)驅(qū)動(dòng)
            // 2. 獲取連接
            conn = DBUtil.getConnection();  // TODO 通過(guò)工具類獲取連接
            // 3.獲取預(yù)編譯的數(shù)據(jù)庫(kù)操作對(duì)象
            String sql = "update emp set ename=?, job=?,sal=? where empno=?";
            ps = conn.prepareStatement(sql);
            ps.setString(1, "李四修改2");
            ps.setString(2, "產(chǎn)品經(jīng)理");
            ps.setDouble(3, 5000.0);
            ps.setInt(4, 12);
            // 4. 執(zhí)行sql語(yǔ)句
            int count = ps.executeUpdate();
            // 5. 處理結(jié)果
            System.out.println("修改了" + count + "條記錄");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally {

            // 6.釋放資源
            DBUtil.close(conn,ps, null);  // TODO 通過(guò)工具類關(guān)閉資源
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容