JDBC 連線字串因資料庫廠商而異,本文彙整 7 大主流資料庫 的標準驅動類名、URL 格式、必要參數與完整連線程式碼,並標註常見版本差異與避坑要點。
| 資料庫 | 驅動類(建議版本) | URL 格式 | 預設埠 |
|---|---|---|---|
| DB2 | com.ibm.db2.jcc.DB2Driver (JCC 通用驅動) |
jdbc:db2://<host>:<port>/<dbName> |
50000 |
| SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver (mssql-jdbc) |
jdbc:sqlserver://<host>:<port>;databaseName=<db> |
1433 |
| Sybase | com.sybase.jdbc4.jdbc.SybDriver (jConnect 7+) |
jdbc:sybase:Tds:<host>:<port>/<db> |
5000 |
| MySQL | com.mysql.cj.jdbc.Driver (8.0+) |
jdbc:mysql://<host>:<port>/<db>?useSSL=false&serverTimezone=UTC |
3306 |
| PostgreSQL | org.postgresql.Driver |
jdbc:postgresql://<host>:<port>/<db> |
5432 |
| Oracle | oracle.jdbc.OracleDriver (ojdbc8/11) |
jdbc:oracle:thin:@//<host>:<port>/<service_name> |
1521 |
| ODBC 橋接 | sun.jdbc.odbc.JdbcOdbcDriver (Java 8 移除) |
jdbc:odbc:<DSN> |
— |
import java.sql.*;
public class JdbcConnector {
public static Connection getConnection(String driver, String url, String user, String pwd)
throws ClassNotFoundException, SQLException {
Class.forName(driver); // 1. 載入驅動(Java 6+ 可省略,SPI 自動載入)
return DriverManager.getConnection(url, user, pwd); // 2. 建立連線
}
public static void main(String[] args) {
// MySQL 8 範例
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Taipei";
String user = "root";
String pwd = "password";
try (Connection conn = getConnection(driver, url, user, pwd)) {
System.out.println("連線成功:" + conn.getMetaData().getURL());
// 執行 SQL...
} catch (Exception e) {
e.printStackTrace();
}
}
}
com.mysql.jdbc.Driver 變更為 com.mysql.cj.jdbc.DriveruseSSL=false(非生產環境)與 serverTimezone 避免時區警告caching_sha2_password 認證,舊版驅動需升級jdbc:oracle:thin:@//host:port/service_namejdbc:oracle:thin:@host:port:SID(相容但不推薦)ojdbc8.jar (Java 8) / ojdbc11.jar (Java 11+)mssql-jdbc 取代舊 jtdsdatabaseName 屬性encrypt=true;trustServerCertificate=falsecurrentSchema=myschema 設定預設 Schemajdbc:postgresql://host/db?currentSchema="MySchema"currentSchema=SCHEMA、securityMechanism=13 (加密)com.sybase.jdbc4.jdbc.SybDriverserver.ini 設定# application.properties (Spring Boot 風格)
datasource.driver-class-name=com.mysql.cj.jdbc.Driver
datasource.url=jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useSSL=false&serverTimezone=UTC
datasource.username=${DB_USER}
datasource.password=${DB_PASS}
datasource.hikari.maximum-pool-size=20
掌握各資料庫的驅動類全名、標準 URL 格式、關鍵連線參數,搭配連線池與配置外部化,即可構建穩健、可移植的資料存取層。