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

主流數據庫 JDBC 連接配置大全:Oracle、MySQL、PostgreSQL、SQL Server 等完整參數指南

     編輯:Java 相關知識

前言:JDBC URL 是數據庫連接的「身份證」

掌握各主流數據庫的 JDBC 驅動類名、URL 格式、關鍵參數,是 Java 開發者的基本功。本文匯總 8 大主流數據庫的標準連接配置,並解析核心參數含義與常見坑點。

一、Oracle Database (Thin 模式)

// 驅動類
Class.forName("oracle.jdbc.driver.OracleDriver"); // 11g及之前
// 或 oracle.jdbc.OracleDriver (12c+ 推薦)

// URL 格式
jdbc:oracle:thin:@::           // SID 模式(傳統)
jdbc:oracle:thin:@:/  // Service Name 模式(推薦,支持 RAC)
jdbc:oracle:thin:@//:/ // 易連接語法

// 示例
String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
String url = "jdbc:oracle:thin:@//localhost:1521/ORCLPDB1";

// 關鍵參數
// user/password、oracle.net.CONNECT_TIMEOUT、oracle.jdbc.ReadTimeout
// defaultRowPrefetch、defaultBatchValue、useFetchSizeWithLongColumn

二、MySQL / MariaDB

// 驅動類
Class.forName("com.mysql.cj.jdbc.Driver"); // 8.0+ (MySQL Connector/J)
// 5.1 版本: com.mysql.jdbc.Driver

// URL 格式
jdbc:mysql://:/?=&=...

// 核心參數(必加推薦)
// useSSL=false              // 非生產環境關閉 SSL
// allowPublicKeyRetrieval=true // 允許公鑰獲取(配合 caching_sha2_password)
// serverTimezone=UTC        // 時區,必須設置避免時區差異
// characterEncoding=utf8mb4 // 字符集,支持 emoji
// useUnicode=true           // 使用 Unicode
// autoReconnect=true        // 自動重連(生產環境建議配合連接池而非依賴此項)
// rewriteBatchedStatements=true // 批量執行優化(關鍵性能參數)
// cachePrepStmts=true       // 緩存 PreparedStatement
// prepStmtCacheSize=250     // 緩存大小
// prepStmtCacheSqlLimit=2048 // 單條 SQL 緩存長度限制
// connectTimeout=30000      // 連接超時 ms
// socketTimeout=60000       // 讀寫超時 ms

// 完整示例
String url = "jdbc:mysql://localhost:3306/my_db?" +
    "useSSL=false&" +
    "allowPublicKeyRetrieval=true&" +
    "serverTimezone=Asia/Shanghai&" +
    "characterEncoding=utf8mb4&" +
    "useUnicode=true&" +
    "rewriteBatchedStatements=true&" +
    "cachePrepStmts=true&" +
    "prepStmtCacheSize=250&" +
    "prepStmtCacheSqlLimit=2048&" +
    "connectTimeout=30000&" +
    "socketTimeout=60000";

三、PostgreSQL

// 驅動類
Class.forName("org.postgresql.Driver");

// URL 格式
jdbc:postgresql://:/?

// 核心參數
// user/password
// sslmode=disable/require/verify-ca/verify-full
// currentSchema=my_schema        // 設置默認 Schema
// ApplicationName=MyApp          // 應用名稱(便於 pg_stat_activity 監控)
// prepareThreshold=5             // PreparedStatement 緩存閾值
// preferQueryMode=simple/extended // 查詢模式

// 示例
String url = "jdbc:postgresql://localhost:5432/my_db?" +
    "sslmode=disable&" +
    "currentSchema=public&" +
    "ApplicationName=MyApp&" +
    "prepareThreshold=5";

四、Microsoft SQL Server

// 驅動類
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 官方驅動
// 或 com.microsoft.jdbc.sqlserver.SQLServerDriver (舊版 jTDS)

// URL 格式
jdbc:sqlserver://:;databaseName=;[params]

// 核心參數
// user/password
// encrypt=true/false             // 加密連接
// trustServerCertificate=true    // 信任服務器證書(開發環境)
// loginTimeout=30                // 登錄超時秒
// socketTimeout=30               // Socket 超時秒
// applicationName=MyApp          // 應用名
// sendStringParametersAsUnicode=true // 字符串參數作為 Unicode 發送

// 示例
String url = "jdbc:sqlserver://localhost:1433;" +
    "databaseName=my_db;" +
    "encrypt=false;" +
    "trustServerCertificate=true;" +
    "loginTimeout=30;" +
    "applicationName=MyApp";

五、DB2 (LuW / z/OS)

// 驅動類
// Type 4 (通用): com.ibm.db2.jcc.DB2Driver
// Type 2 (本地): com.ibm.db2.jdbc.app.DB2Driver

// URL 格式
jdbc:db2://:/:;

// 核心參數
// user/password
// currentSchema=SCHEMA
// securityMechanism=3/4/7/9/11/13 // 認證機制
// sslConnection=true

// 示例
String url = "jdbc:db2://localhost:50000/SAMPLE:" +
    "currentSchema=MY_SCHEMA;" +
    "securityMechanism=3;";

六、Sybase ASE / SAP ASE

// 驅動類
Class.forName("com.sybase.jdbc4.jdbc.SybDriver"); // jConnect 7+

// URL 格式
jdbc:sybase:Tds::/?

// 核心參數
// user/password
// CHARSET=utf8
// ENABLE_BULK_LOAD=true
// BATCH_SIZE=1000

// 示例
String url = "jdbc:sybase:Tds:localhost:5000/myDB?CHARSET=utf8";

七、Informix

// 驅動類
Class.forName("com.informix.jdbc.IfxDriver");

// URL 格式
jdbc:informix-sqli://:/:INFORMIXSERVER=;

// 核心參數
// user/password
// IFX_LOCK_MODE_WAIT=10
// DELIMIDENT=y

// 示例
String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:" +
    "INFORMIXSERVER=myserver;" +
    "user=testuser;password=testpass";

八、Access (UCanAccess / Jackcess - 現代方案)

注意:JDK 8 移除了 JDBC-ODBC Bridge (sun.jdbc.odbc.JdbcOdbcDriver),生產環境請使用純 Java 驅動 UCanAccess (依賴 Jackcess)。

// 驅動類 (UCanAccess)
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");

// URL 格式
jdbc:ucanaccess://[,param=value...]

// 核心參數
// singleConnection=true        // 單連接模式(Access 文件鎖限制)
// ignoreCase=true              // 忽略大小寫
// showSchema=true              // 顯示 Schema

// 示例
String url = "jdbc:ucanaccess:///data/mydb.accdb?singleConnection=true";

九、連接池最佳實踐:HikariCP 配置模板

HikariConfig config = new HikariConfig();
config.setJdbcUrl(url);
config.setUsername(user);
config.setPassword(password);

// 核心池參數
config.setMaximumPoolSize(20);           // 最大連接數
config.setMinimumIdle(5);                // 最小空閒
config.setIdleTimeout(300000);           // 空閒超時 5 分鐘
config.setMaxLifetime(1800000);          // 連接最大壽命 30 分鐘
config.setConnectionTimeout(30000);      // 獲取連接超時 30 秒
config.setLeakDetectionThreshold(60000); // 洩漏檢測 60 秒

// 數據庫特定優化
config.addDataSourceProperty("cachePrepStmts", "true");        // MySQL
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
config.addDataSourceProperty("useServerPrepStmts", "true");    // PostgreSQL
config.addDataSourceProperty("prepareThreshold", "5");

HikariDataSource dataSource = new HikariDataSource(config);

十、安全與運維清單

  1. ✅ 憑證管理:配置文件加密、環境變量注入、Vault/Secrets Manager、輪換機制
  2. ✅ 最小權限:應用賬號僅擁有業務必需的 DML/DDL 權限,無 DROP/TRUNCATE/GRANT
  3. ✅ SSL/TLS:生產環境強制加密連接,驗證服務器證書
  4. ✅ 連接驗證:connectionTestQuery: SELECT 1 / validationTimeout
  5. ✅ 監控指標:活躍/空閒/等待連接數、連接獲取耗時、SQL 執行耗時、錯誤率
  6. ✅ 驅動版本:鎖定穩定版本,定期更新修復安全漏洞(CVE)

總結

JDBC 連接配置看似簡單,實則關係系統穩定性與性能。建議:統一使用連接池(HikariCP)、外部化配置、參數化優化、啟用監控。收藏本文,新項目接入新數據庫時查閱對應章節,少踩坑、快交付。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved