Java的數據庫連接工具類的編寫


Java的數據庫連接工具類的編寫

步驟:

1. 定義變量
2. 通過反射進行讀取配置文件
3. 實例化Properties讀取配置文件中的各個屬性
4. 關閉字節輸入流
5. 類加載
6. 通過驅動管理的獲取連接方法獲取到連接對象
7. 釋放資源

代碼:

package cn.javabs.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
  * @author: Mryang
  * Jdbc工具類:  工具類的含義是作為一個通用的輔助資料使用,簡化開發流程,提高效率。
  *             工具類一般使用“static”進行修飾,靜態化
  *                    static的優點
  *                      |---- 1. 可以使用 【類名.函數名稱】進行調用,不必再次創建對象
  *                      |---- 2. 優於構造函數先執行
  *                      |---- 4. 靜態成員被所有對象所共享(靜態數據達到成為共享數據)
  *                      |---- 3. 隨着類的加載而加載 (也就是說類運行了,靜態成員也就跟隨運行了) 
  *                    static的缺點
  *                      |---- 1. 訪問出現局限性,只能訪問靜態
  *                      |---- 2. 靜態成員的生命周期過長
  *                      |---- 3. 不可以與this\super關鍵字同用
  *                                 |----因為this代表是當前類對象,而靜態存在時,有可能沒有對象
  *                                 |----因為super代表是父類對象,而靜態存在時,有可能沒有對象,
  *                                 |----而且靜態優先於對象存在
  *                      |----4.靜態方法只能訪問靜態成員, 非靜態方法既可以訪問靜態又可以訪問非靜態; 
  *                        
  *    
  **/
public class JdbcUtil {
    
    // 定義 數據庫驅動
    private static String driverClass;
    // 定義 數據庫的連接
    private static String url;
    // 定義 數據庫用戶
    private static String user;
    // 定義 數據庫用戶的密碼
    private static String password;
    
    // 靜態代碼塊
    static{
        try {
        //  JdbcUtil.class是獲得當前對象所屬的class對象 
        //  getClassLoader()是取得該Class對象的類裝載器 
        //  getResourceAsStream(“dbcfg.properties”) 調用類加載器的方法加載資源,返回是字節輸入流 
            InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("dbcfg.properties");
            // 實例化Properties對象,目的是為了創建props
            Properties props = new Properties();
            // 在props對象中可以進行加載屬性列表到Properties類對象
            props.load(in);//也就是說: 通過props對象進行加載輸入流對象(in)
           /*
            * 通過getProperty方法用指定的鍵在此屬性列表中搜索屬性
            */
            //也就是說: 通過props對象進行獲取【dbcfg.properties】中的指定的鍵-driverClass(被指定)
            driverClass = props.getProperty("driverClass");
            //也就是說: 通過props對象進行獲取【dbcfg.properties】中的指定的鍵-url(被指定)
            url = props.getProperty("url");
            //也就是說: 通過props對象進行獲取【dbcfg.properties】中的指定的鍵-user(被指定)
            user = props.getProperty("user");
            //也就是說: 通過props對象進行獲取【dbcfg.properties】中的指定的鍵-password(被指定)
            password = props.getProperty("password");
            //已經獲取過配置文件中的屬性鍵值對,將字節輸入流進行釋放關閉
            in.close();
        } catch (IOException e) {
            // 轉換異常拋出
            throw new ExceptionInInitializerError("獲取數據庫配置文件信息失敗");
        }
        try {
            // 類加載-->驅動
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            // 轉換異常拋出
            throw new ExceptionInInitializerError("加載驅動失敗");
        }
    }
    
    /**
     * 獲取連接
     * @return: conn
     */
    public static Connection getConnection(){
        try {
            //連接類型  連接對象  =  驅動管理中的獲取連接(連接,用戶名,密碼)
            Connection conn = DriverManager.getConnection(url,user,password);
            // 將連接進行返回
            return conn;
        } catch (Exception e) {
            // 轉換異常拋出
            throw new RuntimeException("鏈接數據庫的url或用戶名密碼錯誤,請檢查您的配置文件");
        }
    }
    
    /**
     * 釋放資源
     * 傳遞三個參數: 結果集對象 ,處理Sql語句對象 , 連接對象  
     * 無返回值狀態
     */
    public static void release(ResultSet rs,Statement stmt,Connection conn){
        //如果 結果集中不為空
        if(rs!=null){
            try {
                rs.close();//將結果集中關閉
            } catch (SQLException e) {
                e.printStackTrace();
            }
            rs = null;
        }
        //如果處理Sql語句對象不為空
        if(stmt!=null){
            try {
                stmt.close();//將處理Sql語句對象關閉
            } catch (SQLException e) {
                e.printStackTrace();
            }
            stmt = null;
        }
        //如果 連接不為空
        if(conn!=null){
            try {
                conn.close();//將連接關閉
            } catch (SQLException e) {
                e.printStackTrace();
            }
            conn = null;
        }
    }
}

 

配置文件編寫 - dbcfg.properties:

#driver config for mysql
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
user=root
password=sorry

 

 

 
作者: 楊校

出處:https://www.cnblogs.com/xiaoxiao5016/

分享是快樂的,也見證了個人成長歷程,文章大多都是工作經驗總結以及平時學習積累,基於自身認知不足之處在所難免,也請大家指正,共同進步。

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出, 如有問題, 可郵件(397583050@qq.com)咨詢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM