首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

Java 資料庫連線池通用工具類:支援 Oracle/SQL Server/MySQL 多資料源切換

     編輯:關於SqlServer

設計目標

  • 單例模式管理連線池入口。
  • 外部屬性檔 config.properties 切換資料源類型 (Oracle/SQL Server/MySQL)。
  • 統一異常處理、資源關閉。

核心類 DBConn


package net.fzjol.common.util;

import java.sql.*;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;

public class DBConn {
    private static DBConn instance = null;
    private Connection conn = null;

    private DBConn() {} // 單例私有建構子

    public synchronized static DBConn getInstance() {
        if (instance == null) instance = new DBConn();
        return instance;
    }

    public Connection getConnection() {
        try {
            ResourceBundle rb = PropertyResourceBundle.getBundle("config");
            String type = rb.getString("dataType"); // Oracle | sqlserver | MySQL
            String driver = rb.getString(type + ".driver");
            String url    = rb.getString(type + ".url");
            String user   = rb.getString(type + ".user");
            String pwd    = rb.getString(type + ".pswd");

            Class.forName(driver);
            conn = DriverManager.getConnection(url, user, pwd);
            conn.setAutoCommit(false); // 交易手動控制
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    // 建議補充:closeConnection、commit、rollback 等輔助方法
}

配置檔 config.properties


# 切換這裡即可換資料庫
dataType = Oracle

# Oracle
oracle.driver = oracle.jdbc.driver.OracleDriver
oracle.url    = jdbc:oracle:thin:@172.0.0.1:1521:ORCL
oracle.user   = scott
oracle.pswd   = dbmaster

# SQL Server 2000 (舊驅動)
sqlserver.driver = com.microsoft.jdbc.sqlserver.SQLServerDriver
sqlserver.url    = jdbc:microsoft:sqlserver://172.0.0.1:1433;DatabaseName=test
sqlserver.user   = sa
sqlserver.pswd   = dbmaster

# SQL Server 2005+ (新驅動)
# sqlserver.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
# sqlserver.url    = jdbc:sqlserver://172.0.0.1:1433;databaseName=test

# MySQL
mysql.driver = com.mysql.jdbc.Driver
mysql.url    = jdbc:mysql://localhost:3306/test
mysql.user   = root
mysql.pswd   = dbmaster

生產環境強化建議

  1. **替換單例連線為真正連線池**:HikariCP / Druid / DBCP2,配置 maximumPoolSize、idleTimeout、connectionTestQuery。
  2. **密碼加密**:配置檔密碼欄位加密 (AES/Jasypt),啟動時解密。
  3. **資源確實釋放**:try-with-resources (Java 7+) 包裝 Connection/Statement/ResultSet。
  4. **移除 Class.forName**:JDBC 4.0+ (Java 6+) 驅動自動載入 (SPI 機制)。
  5. **多資料源路由**:AbstractRoutingDataSource (Spring) 實現讀寫分離、租戶隔離。

驅動版本對照表

資料庫驅動類別Maven 坐標 (範例)
SQL Server 2000com.microsoft.jdbc.sqlserver.SQLServerDrivercom.microsoft.sqlserver:sqljdbc:3.0 (舊版需手動安裝)
SQL Server 2005+com.microsoft.sqlserver.jdbc.SQLServerDrivercom.microsoft.sqlserver:mssql-jdbc:12.2.0.jre11
Oracle 11g+oracle.jdbc.OracleDrivercom.oracle.database.jdbc:ojdbc10:19.3.0.0
MySQL 5.6+com.mysql.cj.jdbc.Drivermysql:mysql-connector-java:8.0.33
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved