ojdbc8.jar 放入 Classpathtnsnames.ora (OCI 模式需用)import java.sql.*;
public class OracleJdbcDemo {
public static void main(String[] args) throws SQLException {
// 1. 註冊驅動 (JDBC 4.0+ SPI 自動發現,可省略)
// DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
// 2. 連接 URL (Thin 模式)
String url = "jdbc:oracle:thin:@172.28.31.85:1521:YIKATONG";
String user = "scott";
String pwd = "tiger";
// 3. 獲取連接
try (Connection conn = DriverManager.getConnection(url, user, pwd)) {
System.out.println("Connected: " + conn.getMetaData().getURL());
// 4. 執行查詢
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM test")) {
while (rs.next()) {
System.out.println(rs.getString(1));
}
}
}
}
}
String url = "jdbc:oracle:oci:@tns_alias"; // 需 tnsnames.ora 配置別名
// 或
String url = "jdbc:oracle:oci:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=...)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=...)))";
差異: OCI 需安裝 Oracle Instant Client/完整客戶端,性能略優、支持更多高級特性 (如透明應用故障轉移 TAF),但部署複雜。
HikariConfig config = new HikariConfig();
config.setDriverClassName("oracle.jdbc.OracleDriver");
config.setJdbcUrl("jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(FAILOVER=on)"
+ "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.10)(PORT=1521))"
+ "(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.11)(PORT=1521)))"
+ "(CONNECT_DATA=(SERVICE_NAME=PROD_SVC)))");
config.setUsername("app_user");
config.setPassword("app_pwd");
config.setMaximumPoolSize(30);
config.setMinimumIdle(10);
config.setConnectionTimeout(5000);
config.setIdleTimeout(300000);
config.setMaxLifetime(1200000);
config.setLeakDetectionThreshold(60000);
config.setConnectionInitSql("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS' "
+ "NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS.FF' "
+ "NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH24:MI:SS.FF TZR'");
HikariDataSource ds = new HikariDataSource(config);
// 使用: try (Connection c = ds.getConnection()) { ... }
PreparedStatement,防注入、計劃復用。stmt.setFetchSize(500) 減少網絡往返。pstmt.addBatch() + executeBatch() 大幅提升批量寫入吞吐。Connection/Statement/ResultSet。