Java連接oracle數據庫的兩種常用方法

據我所知,使用jdbc連接上oracle有兩種方法:

1、 使用thin連接

由於thin驅動都是純Java代碼,並且使用TCP/IP技術通過java的Socket連接上Oracle數據庫,所以thin驅動是與平臺無 關的,你無需安裝Oracle客戶端,只需要下載一個thin驅動的jar包,並且將環境變量中的CLASS_PATH變量中加入thin驅動的路徑就可 以了。Thin驅動雖然與平臺無關,也無需安裝Oracle客戶端,但是有一個致命的缺陷就是性能一般,達不到如OCI方式的企業級的要求。另外,如果一 個oracle數據庫對應一臺主機,可以使用thin連接;如果一個oracle數據庫對應四五臺主機(集羣服務器),使用thin時,需要把 tnsnames.ora文件中的相關數據庫的整個連接字符串都拷貝下來,如此才能連接上oracle集羣數據庫。而這種方法也是和數位同事討論並 Google了大量資料後才發現的。之前我一直以爲thin不支持集羣數據庫的方式。

然後就是設置連接字符串了。這個是固定的寫法,如下所示:

Class.forName("oracle.jdbc.driver.OracleDriver");

Connection conn =DriverManager.getConnection ("jdbc:oracle:thin:@10.87.134.107:1521:ora9","sms" , "zzsms");

在上面的連接字符串中,如果不是集羣數據庫就在@後直接輸入數據庫IP地址即可;如果是集羣數據庫,則需要在@後輸入tnsnames.ora文件中有關該數據庫的所有描述內容(通常是=後邊的所有的內容)。

2、 使用oci連接(Oracle Call Interface)

使用OCI連接數據庫是企業級的做法,適應於單個數據庫和集羣數據庫,性能優越,尤其是連接池功能大大提高了應用程序的性能和併發量。唯一的缺點是,若想使用OCI必須要安裝Oracle客戶端。

安裝完Oracle客戶端後,裏面有個jdbc的文件夾,該文件夾下就包含了OCI驅動和THIN驅動。所以是不需要去網上下載的。這個驅動在 jdbc/lib文件夾下,主要有classes12.jar、nls_charset12.jar等等。其中以12結尾的驅動包適應於jdk1.1以上 的版本。以11結尾的適應於jdk1.1以下的版本。文件名中含有classes的jar包就是驅動程序,文件名中含有nls的jar包是與國際化有關的 類。

找到文件後,就需要把class和nls的jar包的絕對路徑加入CLASS_PATH環境變量,否則會報ClassNotFound的異常。

設置環境變量後,就可以直接使用OCI驅動了,不要被“驅動”兩個字嚇壞了,(驅動就是一個可執行文件和一個連接字符串)。很簡單,無非是連接字符串的問題。標準的連接字符串如下所示:

Class.forName("oracle.jdbc.driver.OracleDriver");

Connection con = DriverManager.getConnection("jdbc:oracle:oci:@xxzc","duansiyuan", "oracle_password");

只要這兩行,就可以保證連接到數據庫,而這個數據庫不管是單個數據庫還是集羣數據庫。其中xxzc就是數據庫名,duansiyuan就是用戶名,oralce_password就是密碼。這種方式和C#中的方式比較類似。

需要注意的問題:

1、oracle_home/jdbc文件夾下有大量的樣板代碼和幫助文檔,裏面對如何安裝和使用jdbc都有詳細的說明,請引起高度重視並耐心閱讀。裏面有很多知識僅通過自己反覆的實踐是無法獲取的。

2、如果想要高性能,請使用OCI連接,如果不想裝Oracle客戶端,請使用thin連接。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章