Java 應用連接不同資料庫時,驅動類名、JDBC URL 格式、連接參數各不相同。本文匯總 Oracle、SQL Server、DB2、Informix 四大主流商業資料庫的標準連接代碼範例、驅動獲取途徑、URL 參數詳解、連線池整合建議,供開發者快速查閱與複製適配。
import java.sql.*;
public class DbConnectTemplate {
public static void main(String[] args) {
String driver = ""; // 驅動類全限定名
String url = ""; // JDBC URL
String user = ""; // 用戶名
String password = ""; // 密碼
Connection conn = null;
try {
Class.forName(driver); // JDBC 4.0+ 可省略
conn = DriverManager.getConnection(url, user, password);
System.out.println("連接成功: " + conn.getMetaData().getDatabaseProductName());
// 簡單驗證
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT 1")) {
if (rs.next()) System.out.println("測試查詢: " + rs.getInt(1));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) try { conn.close(); } catch (Exception ignored) {}
}
}
}
| 資料庫 | 驅動類 | JDBC URL 格式 | 驅動獲取 (Maven 坐標) | 預設埠 |
|---|---|---|---|---|
| Oracle | oracle.jdbc.OracleDriver | jdbc:oracle:thin:@host:port:SIDjdbc:oracle:thin:@host:port/serviceName (12c+ PDB)jdbc:oracle:oci:@tnsName (Thin/OCI) | com.oracle.database.jdbc:ojdbc8:21.9.0.0 (需 Oracle 帳號下載) | 1521 |
| SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver (官方)net.sourceforge.jtds.jdbc.Driver (jTDS) | jdbc:sqlserver://host:port;databaseName=db (官方)jdbc:jtds:sqlserver://host:port/db (jTDS) | 官方: com.microsoft.sqlserver:mssql-jdbc:12.2.0jTDS: net.sourceforge.jtds:jtds:1.3.1 | 1433 |
| DB2 | com.ibm.db2.jcc.DB2Driver | jdbc:db2://host:port/dbName (Type 4)jdbc:db2:dbAlias (Type 2, 需客戶端) | com.ibm.db2:jcc:11.5.8.0 (IBM 網站下載) | 50000 |
| Informix | com.informix.jdbc.IfxDriver | jdbc:informix-sqli://host:port/db:INFORMIXSERVER=serverName | com.ibm.informix:jdbc:4.50.JC6 (IBM 網站下載) | 1526/9088 |
String driver = "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:ORCL"; // SID
// String url = "jdbc:oracle:thin:@localhost:1521/pdborcl"; // 12c+ Service Name
String user = "scott";
String password = "tiger";
// 連線池建議 (HikariCP)
/*
HikariConfig config = new HikariConfig();
config.setJdbcUrl(url);
config.setUsername(user);
config.setPassword(password);
config.setDriverClassName(driver);
config.setMaximumPoolSize(20);
config.addDataSourceProperty("oracle.net.CONNECT_TIMEOUT", "5000");
HikariDataSource ds = new HikariDataSource(config);
*/
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url = "jdbc:sqlserver://localhost:1433;databaseName=pubs;encrypt=true;trustServerCertificate=true"; String user = "sa"; String password = "yourPassword"; // 關鍵 URL 參數 // encrypt=true / false (是否 SSL) // trustServerCertificate=true (開發環境自簽憑證) // authentication=ActiveDirectoryPassword (Azure AD) // applicationName=MyApp (應用名稱,利於監控)
String driver = "com.ibm.db2.jcc.DB2Driver"; String url = "jdbc:db2://localhost:50000/SAMPLE"; // 資料庫別名 SAMPLE String user = "db2admin"; String password = "password"; // DB2 特有屬性 // currentSchema=MY_SCHEMA (設定預設 Schema) // securityMechanism=3 (僅用戶名密碼) // sslConnection=true (SSL)
String driver = "com.informix.jdbc.IfxDriver"; String url = "jdbc:informix-sqli://192.168.1.100:9088/mydb:INFORMIXSERVER=ol_informix1210"; String user = "informix"; String password = "password"; // 關鍵參數 // INFORMIXSERVER: 必須與伺服器 sqlhosts 配置一致 // DELIMIDENT=Y (支援雙引號識別符) // IFX_LOCK_MODE_WAIT=10 (鎖等待秒數)
spring:
datasource:
# Oracle
url: jdbc:oracle:thin:@localhost:1521:ORCL
username: scott
password: tiger
driver-class-name: oracle.jdbc.OracleDriver
hikari:
maximum-pool-size: 20
connection-timeout: 5000
validation-timeout: 3000
# Oracle 特有
data-source-properties:
oracle.net.CONNECT_TIMEOUT: 5000
oracle.jdbc.ReadTimeout: 30000
| 資料庫 | 坑點 | 解決 |
|---|---|---|
| Oracle | SID vs Service Name 混淆、時區不一致 (SESSIONTIMEZONE)、長字串截斷 (4000 字元限制) | 12c+ 用 Service Name、JVM 參數 -Duser.timezone=GMT+8、用 CLOB |
| SQL Server | 預設不支援大寫表名、datetime2 精度、鎖升級、死鎖頻發 | URL 加 ;sendStringParametersAsUnicode=false、索引優化、快照隔離級別 |
| DB2 | Schema 概念強、預設大寫、限制條件名稱長度、權限體系複雜 | 明確指定 currentSchema、DDL 時加引號、權限授予 GRANT |
| Informix | INFORMIXSERVER 必須匹配、智能大對象 (BLOB/CLOB) 處理特殊、隔離級別預設 Dirty Read | 核對 sqlhosts、用 IfxBlob/IfxClob API、設定隔離級別 READ COMMITTED |
ojdbc8.jar (JDK 8/11)、ojdbc11.jar (JDK 11+),從 Oracle 官網下載 (需帳號),或使用 Maven Central 的 com.oracle.database.jdbc:ojdbc8 (19c+)mssql-jdbc (官方),支援 Always Encrypted、Data Classification、Kerberos;jTDS 進入維護模式掌握四大商業資料庫的驅動類名、URL 格式、關鍵參數、驅動獲取途徑,能讓你在異構資料庫整合、遷移專案、多資料庫微服務中快速落地。核心原則:官方驅動優先、連線池標準化、參數化配置外部化、驗證查詢防失效、監控指標全覆蓋。將本文作為速查手冊,需要時複製適配,專注業務邏輯創新。