完整 Java 範例程式
package com.terac.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DBTest {
public static void main(String[] args) {
try {
// 通用連線參數
String user = "user";
String password = "passWord";
// --- DB2 ---
String driver = "com.ibm.db2.jcc.DB2Driver"; // 新版通用驅動
String url = "jdbc:db2://localhost:50000/sample";
String sql = "SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1";
/* --- Oracle ---
String driver = "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
String sql = "SELECT SYSDATE FROM DUAL";
*/
/* --- MySQL ---
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
String sql = "SELECT NOW()";
*/
/* --- PostgreSQL ---
String driver = "org.postgresql.Driver";
String url = "jdbc:postgresql://localhost:5432/test";
String sql = "SELECT CURRENT_TIMESTAMP";
*/
Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getString(1));
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
關鍵差異對照表
| 資料庫 | 驅動類別 (現代版) | JDBC URL 格式 | 取得當前時間 SQL |
| DB2 | com.ibm.db2.jcc.DB2Driver | jdbc:db2://host:port/db | SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1 |
| Oracle | oracle.jdbc.OracleDriver | jdbc:oracle:thin:@host:port:sid | SELECT SYSDATE FROM DUAL |
| MySQL | com.mysql.cj.jdbc.Driver | jdbc:mysql://host:port/db?opts | SELECT NOW() |
| PostgreSQL | org.postgresql.Driver | jdbc:postgresql://host:port/db | SELECT CURRENT_TIMESTAMP |
注意事項
- DB2 舊驅動
COM.ibm.db2.jdbc.Net.DB2Driver 已棄用,請改用 JCC 通用驅動。
- MySQL 8.0+ 需加
serverTimezone 參數避免時區警告。
- 生產環境請使用連線池 (HikariCP/Druid) 並外部化配置。
- 查詢單一值可用
prepareStatement + executeQuery,防止注入。