程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 通過連接工具類獲取連接數據庫,方便又快捷,工具類獲取數據庫

通過連接工具類獲取連接數據庫,方便又快捷,工具類獲取數據庫

編輯:MySQL綜合教程

通過連接工具類獲取連接數據庫,方便又快捷,工具類獲取數據庫


         根據前面的連接方法,還有缺點就是,如果人家要換數據庫,還得改動源代碼,然後還要編譯什麼的。這樣客戶修改也不容易。

        做法:我們寫一個配置文件,把該數據寫在配置文件上面,然後通過類來加載改文件,然後讀取相應的數據。這樣就可以解決了換數據庫的問題,我們只需要改動配置文件就可以了,不用動源代碼。


詳細的步驟:

一、通過連接工具類獲取連接

在工程中,通常編寫一個訪問數據庫的工具類,此後所有訪問數據庫的操作,都從工具類中獲取連接。

實現工具類的兩種方式:
• 直接把數據配置寫在工具類。
• 把數據庫配置寫在一個properties屬性文件裡,工具類讀入屬性文件,逐行獲取數據庫參數。
建議使用第二種。


二、通過屬性文件維護連接屬性

db.properties的內容:
#驅動類名
jdbc.driver=com.mysql.jdbc.Driver
#連接字符串
jdbc.url=jdbc:mysql://localhost:3306/csdn
#訪問數據庫的用戶名
jdbc.user=root
#訪問數據庫的密碼
jdbc.password=123456


注意:在properties文件中,#符號表示注釋。


三、從類路徑中加載屬性文件

定義好db.properties之後,需要在Java程序中找到它,可以使用從類路徑加載的方式:

//屬性文件所在的位置
String path = "com/daliu/jdbc/db.properties";
//獲得當前類的路徑,加載指定屬性文件
properties.load(DBUtil.class.getClassLoader().getResourceAsStream(path));

 

四、連接的關閉

在工具類中定義公共的關閉連接的方法,所有訪問數據庫的應用,共享此方法。當完成功能,關閉連接。

protected static void closeConnection(Connection conn) {
         if (conn != null) {
             try {
                 con.close();
             } catch (SQLException e) {
                     e.printStackTrace();
             }
         }
     }

 

首先新建一個java工程,導入所需要的包,新建一個配置文件,如下圖:

 

db.properties文件代碼如下:

1 jdbc.driver=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/csdn
3 jdbc.user=root
4 jdbc.password=123456

 

DBUtil的代碼如下:

package com.daliu.jdbc;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

/**
 * 使用配置文件來配置JDBC連接數據庫 該類用來管理數據庫的連接
 */
public class DBUtil {
    // 連接數據庫的路徑
    public static String url;
    // 連接數據庫的用戶名
    public static String user;
    // 連接數據庫的密碼
    public static String pwd;

    public static String driver;

    // 靜態塊
    static {
        try {
            // 讀取配置文件
            Properties prop = new Properties();
            /*
             * 這種寫法是將來更加推薦的相對路徑 寫法。
             */
            InputStream is = DBUtil.class.getClassLoader().getResourceAsStream(
                    "com/daliu/jdbc/db.properties");

            prop.load(is);
            is.close();
            // 獲取驅動
            driver = prop.getProperty("jdbc.driver");
            // 獲取地址
            url = prop.getProperty("jdbc.url");
            // 獲取用戶名
            user = prop.getProperty("jdbc.user");
            // 獲取密碼
            pwd = prop.getProperty("jdbc.password");

            // 注冊驅動
            Class.forName(driver);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 獲取一個連接
     * 
     * @return
     * @throws Exception
     */
    public static Connection getConnection() throws Exception {
        try {
            /*
             * 通過DriverManager創建一個數據庫的連接 並返回
             */
            Connection conn = DriverManager.getConnection(url, user, pwd);
            /*
             * ThreadLocal的set方法 會將當前線程作為key,並將給定的值 作為value存入內部的map中保存。
             */

            return conn;
        } catch (Exception e) {
            e.printStackTrace();
            // 通知調用者,創建連接出錯
            throw e;
        }
    }

    /**
     * 關閉給定的連接
     */
    public static void closeConnection(Connection conn) {
        try {
            if (conn != null) {
                conn.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 測試是否連接成功
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        System.out.println(getConnection());
    }

}

 

測試效果:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved