Oracle 安裝目錄下:[ORACLE_HOME]\jdbc\lib\
| JDK 版本 | 驅動文件 | 說明 |
|---|---|---|
| JDK 1.1.x | classes111.zip + nls_charset11.zip | 極舊,忽略 |
| JDK 1.2/1.3 | classes12.zip + nls_charset12.zip | 舊版 |
| JDK 1.4/1.5/1.6 | ojdbc14.jar + nls_charset12.zip | 常見 |
| JDK 1.6+ (JDBC 4.0) | ojdbc6.jar / ojdbc7.jar / ojdbc8.jar | 推薦,自動註冊驅動 |
| JDK 11+ | ojdbc10.jar / ojdbc11.jar | 模組化版本 |
原則:驅動版本 ≥ JDK 版本,且匹配資料庫版本。現代項目直接用 Maven 引入
com.oracle.database.jdbc:ojdbc8或ojdbc11最省事。
# Windows 示例 (假設 Oracle 安裝在 E:\oracle\ora92)
CLASSPATH=.;E:\oracle\ora92\jdbc\lib\ojdbc14.jar;E:\oracle\ora92\jdbc\lib\nls_charset12.jar
PATH=%PATH%;E:\oracle\ora92\bin
注意:CLASSPATH 以 . 開頭表示當前目錄。
Window → PreferencesJava → Build Path → User LibrariesNew... 輸入庫名:Oracle JDBCAdd External JARs... → 選中 ojdbc8.jar (及 nls_charset12.jar 若有)
Apply and Close
Build Path → Configure Build Path
2. Libraries 標籤 → Add Library...
3. 選 User Library → Next → 勾選 Oracle JDBC → Finish
public class OracleJdbcTest {
public static void main(String[] args) {
String url = "jdbc:oracle:thin:@localhost:1521:ORCL"; // SID 模式
// String url = "jdbc:oracle:thin:@//localhost:1521/pdborcl"; // 服務名模式 (12c+)
String user = "scott";
String pwd = "tiger";
try (Connection conn = DriverManager.getConnection(url, user, pwd)) {
System.out.println("連接成功!版本: " + conn.getMetaData().getDatabaseProductVersion());
try (Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT SYSDATE FROM DUAL")) {
if (rs.next()) System.out.println("資料庫時間: " + rs.getTimestamp(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
| 錯誤 | 原因 | 解決 |
|---|---|---|
| ClassNotFoundException: oracle.jdbc.driver.OracleDriver | 驅動 JAR 未加入 Build Path | 檢查步驟 3-4,或 Maven 依賴 |
| ORA-12505 / Listener does not know SID | SID/服務名錯誤 | 用 lsnrctl status 確認實際 SID/服務名 |
| ORA-28040: No matching authentication protocol | JDK 8 + Oracle 12c+ 加密協議不匹配 | 升級驅動到 ojdbc8/ojdbc11,或配置 sqlnet.ora 允許弱加密 |
| java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection | IP/端口/防火牆/服務未啟動 | telnet IP 1521 測通,檢查 listener.ora、防火牆、實例狀態 |
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.9.0.0</version>
</dependency>
implementation 'com.oracle.database.jdbc:ojdbc8:21.9.0.0'
無需手動下載 JAR、配置用戶庫,專案攜帶依賴,團隊協作零配置。