資料庫連接是 J2EE 開發核心環節。本文系統整理本地 JDBC 連接三種模式(OCI、Thin、JDBC-ODBC Bridge),以及 iPlanet Application Server 6.5 與 Sun ONE Application Server 7 兩大主流應用伺服器的連接池配置實戰,最後示範透過 JNDI 從連接池取得連接的統一範式。
依賴本地動態庫,適用於已安裝 Oracle Client 的環境。須將 classes12.zip 加入 classpath。
// 連接字串格式:jdbc:oracle:oci8:username/password@serviceName
final static String sConnStr = "jdbc:oracle:oci8:sr/sr@ora199";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(sConnStr);
無需 Client,僅需 ojdbc14.jar(或同版本),攜帶性最佳。連接字串含 IP、Port、SID:
// 格式:jdbc:oracle:thin:@host:port:SID
String connStr = "jdbc:oracle:thin:@10.1.4.199:1521:ora199";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(connStr, "sr", "sr");
提供多載建構子支援動態指定 IP 與 Service Name,靈活度高。
依賴系統 ODBC 資料源設定,效能較差,逐漸被淘汰:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc:ora199", "sr", "sr");
ora-type4,Classpath 指向 classes12.zipcredit2,DriverType 選 ora-type4,Datasource 填 ora199credit2 → Vendor Specific Properties → 新增 URL 屬性classes12.zip 放入 server1/libMyConnectionPoolora199無論上述哪種伺服器,應用端程式碼完全一致:
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("jdbc/credit2");
Connection conn = ds.getConnection();
try-with-resources 或 finally 關閉連接、Statement、ResultSet