ojdbc14.jar(支援 JDK 1.4/1.5/1.6),官網:oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html。
import java.sql.*;
import javax.sql.PooledConnection;
import oracle.jdbc.pool.OracleConnectionPoolDataSource;
import java.util.*;
public class JDBCTest {
private String url;
public JDBCTest(String host, String port, String sid) {
// JDK 1.5 必須用冒號;JDK 1.6+ 可用斜線
url = "jdbc:oracle:thin:@" + host + ":" + port + ":" + sid;
}
public List<String> getList(String user, String pwd, String sql) {
List<String> result = new ArrayList<>();
try {
OracleConnectionPoolDataSource ds = new OracleConnectionPoolDataSource();
String envUrl = System.getProperty("JDBC_URL");
if (envUrl != null) url = envUrl;
ds.setURL(url);
ds.setUser(user);
ds.setPassword(pwd);
try (PooledConnection pc = ds.getPooledConnection();
Connection conn = pc.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery()) {
while (rs.next()) result.add(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace(); // 實際專案請用日誌框架
}
return result;
}
public static void main(String[] args) {
JDBCTest test = new JDBCTest("localhost", "1521", "orcl");
List<String> list = test.getList("user", "pass", "SELECT col FROM table");
System.out.println("Rows: " + list.size());
}
}
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection conn = DriverManager.getConnection(url, user, pwd);
| JDK 版本 | URL 格式 | 範例 |
|---|---|---|
| 1.5 及以下 | 冒號分隔 | jdbc:oracle:thin:@host:port:sid |
| 1.6+ | 冒號或斜線 | jdbc:oracle:thin:@host:port/sid |
錯誤現象:JDK 1.5 使用斜線會拋 Io exception: The Network Adapter could not establish the connection。
try-with-resources 自動關閉資源(JDK 7+)。setMaxStatements、setConnectionCacheProperties。OracleConnectionPoolDataSource。掌握 JDBC 連線 Oracle 的兩種方式、URL 版本差異、資源管理與連線池調優,能快速構建穩健的資料存取層。