在 Eclipse 中開發 Java 應用連接 Oracle,核心步驟是:**專案加入 JDBC 驅動 JAR** → **編寫連接類 (載入驅動、建立連線、關閉資源)** → **配置正確的 JDBC URL (參考 tnsnames.ora)**。本文提供完整圖文步驟與可直接運行的代碼。
ojdbc6.jar 或 ojdbc14.jar)$ORACLE_HOME/jdbc/lib/ojdbc6.jar (JDK 6/7/8) 或 ojdbc14.jar (JDK 1.4/5)
package com.wuy;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectOracle {
private Connection con;
private String user = "scott";
private String password = "18233188050";
private String className = "oracle.jdbc.driver.OracleDriver";
// Thin 驅動 URL 格式:jdbc:oracle:thin:@::
// 必須與 tnsnames.ora 中的 HOST、PORT、SID/Service_Name 一致
private String url = "jdbc:oracle:thin:@hr-PC:1521:orcl";
public ConnectOracle() {
try {
Class.forName(className);
System.out.println("載入資料庫驅動成功!");
} catch (ClassNotFoundException e) {
System.out.println("載入資料庫驅動失敗!");
e.printStackTrace();
}
}
/** 建立資料庫連接 */
public Connection getCon() {
try {
con = DriverManager.getConnection(url, user, password);
System.out.println("建立資料庫連接成功!");
} catch (SQLException e) {
System.out.println("建立資料庫連接失敗!");
e.printStackTrace();
con = null;
}
return con;
}
public void close() {
try {
if (con != null) {
con.close();
System.out.println("關閉連接成功!");
}
} catch (SQLException e) {
System.out.println("關閉連接失敗!");
e.printStackTrace();
}
}
public static void main(String[] args) {
ConnectOracle c = new ConnectOracle();
c.getCon();
c.close();
}
}
tnsnames.ora 範例 (位於 $ORACLE_HOME/network/admin/tnsnames.ora):
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hr-PC)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

URL 對應關係:
hr-PC → HOST1521 → PORTorcl → SERVICE_NAME (或 SID,視實例配置)⚠️ 必須依 tnsnames.ora 實際內容填寫 URL,否則會出現 ORA-12505、ORA-12514、ORA-12541 等連線錯誤。
| 錯誤 | 原因 | 對策 |
|---|---|---|
ClassNotFoundException | JAR 未加入 Build Path 或版本不符 JDK | 確認 ojdbc 版本對應 JDK (ojdbc6→JDK6+,ojdbc8→JDK8+) |
ORA-12505 | SID/Service Name 錯誤,監聽器無此服務 | 核對 tnsnames.ora SERVICE_NAME/SID,lsnrctl status 確認 |
ORA-12541 | 無監聽器 / 監聽器未啟動 | 啟動監聽器 lsnrctl start,檢查防火牆 |
ORA-12514 | 監聽器無法解析服務名 | 檢查 SERVICE_NAME 拼寫、實例是否註冊到監聽器 |
ORA-28000 | 帳號鎖定 | ALTER USER scott ACCOUNT UNLOCK; |

Console 輸出:
載入資料庫驅動成功!
建立資料庫連接成功!
關閉連接成功!
spring:
datasource:
url: jdbc:oracle:thin:@hr-PC:1521:orcl
username: scott
password: 18233188050
driver-class-name: oracle.jdbc.OracleDriver
hikari:
maximum-pool-size: 20
minimum-idle: 5
connection-timeout: 30000
生產環境**禁止**直接用 DriverManager.getConnection,必須使用成熟連接池 (HikariCP、Druid、DBCP2)。