J2EE應用中與Oracle資料庫的串連
作者:洪建
在J2EE應用程式開發中,應用程式與資料庫連接的建立是我們經常遇到的問題之一。在這裡我主要談談在本地應用程式中通過OCI方式、thin方式和JdbcOdbc橋方式串連Oracle資料庫,在iPlanet Application Server 6.5和Sun Java System Application Server 7中對Oracle資料庫連接池的配置以及應用中如何從串連池中獲得串連。
一、本地通過JDBC獲得Oracle資料庫連接
通過JDBC獲得Oracle資料庫連接,有三種方式:OCI方式、thin方式和JdbcOdbc橋方式。OCI方式依賴於本地的動態連結程式庫,如果在本地安裝了Oracle資料庫用戶端可以採用該方式;而thin方式為純java的資料庫連接方式;JdbcOdbc橋方式依賴於本地ODBC資料庫源的配置,這種方式一般不太被採用。
1、OCI方式
先在本地安裝Oracle用戶端,安裝完之後,在安裝的路徑中可以找到…/jdbc/lib/classes12.zip檔案,我們在環境變數classpath中設定classes12.zip所在的路徑。
然後通過以下的資料庫連接類,在本地通過OCI方式獲得Oracle資料庫連接。
/*** 在本地獲得資料庫連接*/package com.j2ee.db;import java.util.*;import java.sql.*;import javax.sql.*;import java.io.*;import oracle.jdbc.driver.*; import javax.naming.*; /*** 通過OCI方式獲得Oracle資料庫連接*/public class DbConnection { final static String sDBDriver = "oracle.jdbc.driver.OracleDriver"; final static String sConnStr = "jdbc:oracle:oci8:sr/sr@ora199"; /** * */ public DbConnection() { } /** * 獲得Oracle資料庫連接 */ public java.sql.Connection connectDbByOci() { java.sql.Connection conn=null; try { Class.forName(sDBDriver); conn = DriverManager.getConnection(sConnStr); } catch (Exception e) { System.out.println("ERROR:"+e.getMessage()); } return conn; }}
在連接字串 "jdbc:oracle:oci8:sr/sr@ora199" 中,"sr/sr"為Oracle使用者的使用者名稱和口令,"ora199"為資料庫服務名。
2、thin方式
先到Oracle技術網(http://otn.oracle.com/global/cn/software/tech/java/sqlj_jdbc/index.html)下載Oracle JDBC Drivers,同樣地將下載後的zip檔案的路徑設定在環境變數classpath。
然後通過以下的資料庫連接類,在本地通過thin方式獲得Oracle資料庫連接。
/*** 在本地獲得資料庫連接*/package com.j2ee.db;import java.util.*;import java.sql.*;import javax.sql.*;import java.io.*;import oracle.jdbc.driver.*; import javax.naming.*; /*** 通過thin方式獲得Oracle資料庫連接*/public class DbConnection {privateString sConnStr = ""; /*** 預設構造器*/public DbConnection() {sConnStr = "jdbc:oracle:thin:@10.1.4.199:1521:ora199";}/*** @param ip,serviceName*/public DbConnection(String ip,String serviceName) {sConnStr = "jdbc:oracle:thin:@"+ip+":1521:"+serviceName;} /*** 通過thin方式獲得Oracle資料庫的串連.*/public java.sql.Connection connectDbByThin() { java.sql.Connection conn=null; try{Class.forName(sDBDriver);conn = DriverManager.getConnection(sConnStr,"sr","sr");}catch (Exception e) {System.out.println("ERROR:"+e.getMessage()); } return conn;}/*** 通過thin方式獲得Oracle資料庫的串連.* @param userId,password*/public java.sql.Connection connectByJdbc(String userId,String password) { java.sql.Connection conn=null; try{Class.forName(sDBDriver);conn = DriverManager.getConnection(sConnStr,userId,password);}catch (Exception e) {System.out.println("ERROR:"+e.getMessage()); } return conn;}}
這種方式運用起來比較靈活,簡單,具有較強的移植性和適用性。只要注意連接字串"jdbc:oracle:thin:@10.1.4.199:1521:ora199"中具體參數的設定即可。
3、JdbcOdbc橋方式
先通過管理工具中的資料來源來添加本地對Oracle資料庫的串連,然後通過以下的資料庫連接類,在本地通過JdbcOdbc橋方式獲得Oracle資料庫連接。
/*** 在本地獲得資料庫連接*/package com.j2ee.db;import java.util.*;import java.sql.*;import javax.sql.*;import java.io.*;import oracle.jdbc.driver.*; import javax.naming.*; /*** 通過JdbcOdbc橋方式獲得Oracle資料庫連接*/public class DbConnection { /** * */ public DbConnection() { } /** * 獲得Oracle資料庫連接 */ public java.sql.Connection connectDbByJdbcOdbcBridge() { java.sql.Connection conn=null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnection("jdbc:odbc:ora199","sr","sr"); } catch (Exception e) { System.out.println("ERROR:"+e.getMessage()); } return conn; }}
在getConnection方法中第一個參數"jdbc:odbc:ora199" 中的"ora199"為本地ODBC資料來源的資料來源名稱,第二個參數和第三個參數分別為Oracle的使用者名稱和口令。