首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java JDBC 連線 Oracle 10g 完整範例與 JDK 版本 URL 差異避坑指南

     編輯:Java 相關知識

依賴準備

  • 下載 ojdbc14.jar(支援 JDK 1.4/1.5/1.6),官網:oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html。
  • 專案加入 JAR 至 classpath。

連線池方式(推薦生產環境)


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());
    }
}

傳統 DriverManager 方式


Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection conn = DriverManager.getConnection(url, user, pwd);

關鍵避坑:JDK 版本與 URL 格式

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。

最佳實踐補充

  1. 使用 try-with-resources 自動關閉資源(JDK 7+)。
  2. 連線池參數調優:setMaxStatements、setConnectionCacheProperties。
  3. 預處理語句防 SQL 注入,提升效能。
  4. 異常處理記錄完整堆疊,避免吞噬例外。
  5. 生產環境建議使用 HikariCP、Druid 等成熟連線池,而非原生 OracleConnectionPoolDataSource。

總結

掌握 JDBC 連線 Oracle 的兩種方式、URL 版本差異、資源管理與連線池調優,能快速構建穩健的資料存取層。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved