1. 程式人生 > >Java開發Oracle的jdbc驅動三種主要分類:

Java開發Oracle的jdbc驅動三種主要分類:

  1、JDBC OCI: oci是oracle call interface的縮寫,此驅動類似於傳統的ODBC 驅動。因為它需要Oracle Call Interface and Net8,所以它需要在執行使用此驅動的JAVA程式的機器上安裝客戶端軟體,其實主要是用到orcale客戶端裡以dll方式提供的oci和伺服器配置。
  2、JDBC Thin: thin是for thin client的意思,這種驅動一般用在執行在WEB瀏覽器中的JAVA程式。它不是通過OCI or Net8,而是通過Java sockets進行通訊,是純java實現的驅動,因此不需要在使用JDBC Thin的客戶端機器上安裝orcale客戶端軟體,所以有很好的移植性,通常用在web開發中。
  3、JDBC KPRB: 這種驅動由直接儲存在資料庫中的JAVA程式使用,如Java Stored Procedures 、triggers、Database JSP's。因為是在伺服器內部使用,他使用預設或當前的會話連線來訪資料庫,不需要使用者名稱密碼等,也不需要資料庫url。

  在應用開發的時候,通常是用前面兩種方式,下面是資料庫url的寫法:
  jdbc:oracle:thin:@server ip: service
  jdbc:oracle:oci:@service
  看來oci的還更加簡潔,ip可以省掉不寫了,這是因為oci驅動通過客戶端的native java methods來條用c library方式來訪問資料庫伺服器,使用到了客戶端的net manager裡的資料庫服務配置。
  因為oci方式最終與資料庫伺服器通訊互動是用的c library庫,理論上效能優於thin方式,據說主要是體現在blob欄位的存取上。
  開發oracle經常用到的 pl sql dev使用的估計是oci方式,需要安裝客戶端,但也可以不安裝,但是要抽出其中的oci相關的dll即jar包、註冊環境變數、配置偵聽檔案等,無需安裝oracle客戶端,用plsql連線遠端oracle 詳細步見附註。
  oracle在10g之後提供了精簡客戶端,安裝的過程應該包括上面的那些工作。
    程式碼示例:
    package src.test;

import java.sql.*;

public class dbOCI {
 
 public static void main1() throws SQLException {
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   Connection conn = DriverManager.getConnection(
     "jdbc:oracle:oci:@oracle92", "scott", "tiger");
   Statement stmt = conn.createStatement();
   ResultSet rset = stmt.executeQuery("select * from dept");
   while (rset.next())
    System.out.println(rset.getString(1));
   stmt.close();
   conn.close();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
 }
}

package src.test;

import java.sql.*;

public class dbThin {
 public static void Main2() {
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   String url = "jdbc:oracle:thin:@192.168.0.100:1521:server9i";
   Connection c = DriverManager.getConnection(url, "scott", "tiger");
   Statement stmt = c.createStatement();
   String sql = "select * from dept";
   ResultSet rs = stmt.executeQuery(sql);
   while (rs.next()) {
    System.out.println("dname: " + rs.getString("dname"));
   }
   stmt.close();
   c.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

附註:
無需安裝oracle客戶端,用plsql連線遠端oracle 步驟

1、在安裝ORACLE伺服器的機器上搜索下列檔案,
oci.dll
ocijdbc10.dll
ociw32.dll
orannzsbb10.dll
oraocci10.dll
oraociei10.dll
sqlnet.ora
tnsnames.ora
classes12.jar
ojdbc14.jar
放到一個資料夾,如 oraclient

  2、配置tnsnames.ora,如果本機上沒有安裝oracle,
可以從安裝了oracle的機上拷貝一個(tnsnames.ora檔案在%ORACLE_HOME%/network/admin下)放在上面的目錄D:/oraclient下。
oracledata =
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.58)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oracledata)
    )
)

3、新增一個環境變數,名為TNS_ADMIN,值為tnsnames.ora檔案所在路徑(如:D:/oraclient,特別是重灌後或其它操作,忘了TNS_ADMIN變數,plsql登陸就會報無法解析指定的連線識別符號),這是為了能夠找到上面說的tnsnames.ora。如果本機上安裝了ORACLE,並且設定了ORACLE_HOME環境變數,那麼會自動在%ORACLE_HOME%/network/admin/位置查詢tnsnames.ora檔案。

4、設定ORACLE的語言,新增環境變數:
“NLS_LANG = SIMPLIFIEDCHINESE_CHINA.ZHS16GBK”,(AMERICAN_AMERICA.US7ASCII 是ASCII編碼型別,其它型別可自己到伺服器看一下或網上查詢一下)

相關推薦

Java開發Oracle的jdbc驅動主要分類

  1、JDBC OCI: oci是oracle call interface的縮寫,此驅動類似於傳統的ODBC 驅動。因為它需要Oracle Call Interface and Net8,所以它需要在執行使用此驅動的JAVA程式的機器上安裝客戶端軟體,其實主要是用到orc

建立JAVA執行緒的主要方式

程式 程序 執行緒 程式: 一組計算機指令有序的集合 程序: 具有一定功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位。 執行緒: 執行緒是程序的實體,是cpu分派和排程的基本單位,它是比程序更小的能獨立執行的基本單位。執行緒自己基本上不擁有系統資源

java swing 常用的佈局方式邊界佈局、流佈局、網格佈局管理器

作者:firstmiki 來源:firstmiki的部落格 著作權歸作者所有,轉載請聯絡作者獲得授權。 這篇博文僅僅簡單介紹了三種常見的佈局管理器,都是一些簡單應用; 一、 邊界佈局管理器(FlowLayout) /* * 功能:演示邊界佈局管理器:元件的位

Java Web開發Tomcat中部署專案的方法(轉)

轉自:http://www.gowhich.com/blog/539 第一種方法:在tomcat中的conf目錄中,在server.xml中的,節點中新增: <Context path="/hello" docBase="D:\eclipse3.2.2forwebtools\works

java主要迴圈結構

順序結構的程式語句只能 被執行一次。如果你要同樣的操作執行多次,就需要使用迴圈結構。 java中有三種主要的迴圈結構: while 迴圈 do...while 迴圈 for 迴圈 在java5中引入一種主要用於陣列的增強型for迴圈。123456

Java開發中的23設計模式詳解()

 本章是關於設計模式的最後一講,會講到第三種設計模式——行為型模式,共11種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。 先來張圖,看看這11中模式的關係: 第一類:通過父類與子類的關

JAVA開發Web Service幾框架介紹

需求 驚人的 總線 cast pri web服務 希望 uil blank 在講Web Service開發服務時,需要介紹一個目前開發Web Service的幾個框架,分別為Axis,axis2,Xfire,CXF以及JWS(也就是前面所述的JAX-WS,這是Java

11.4-全棧Java筆記:線程狀態的控制

java關於Java線程終止、暫停、聯合的文章網上有很多,經過測試,本節重點講解的是針對不同使用場景選擇合適的方法。終止線程的典型方式終止線程我們一般不使用JDK提供的stop()/destroy()方法(他們本身也被JDK廢棄了)。通常的做法是提供一個boolean型的終止變量,當這個變量置為false,則

Java 多線程 實現方式

() 例子 屬於 周期性 core www object 並且 check Java多線程實現方式主要有三種:繼承Thread類、實現Runnable接口、使用ExecutorService、Callable、Future實現有返回結果的多線程。其中前兩種方式線程執行完後都

處理大數據流常用的Apache框架Storm、Spark和Samza。(主要介紹Storm)

領導 hdf 客戶端 orm 至少 per yar 持續性 apache 處理實時的大數據流最常用的就是分布式計算系統,下面分別介紹Apache中處理大數據流的三大框架: Apache Storm 這是一個分布式實時大數據處理系統。Storm設計用於在容錯和

Java開發web的幾開發模式

調度 開發模式 process 模板 spring 程序 校驗 透明 class Java開發web的幾種開發模式 Java Web開發方案有多種可供選擇,這裏列舉一些經典的開發模式進行橫向比較,為Java Web的開發模式選擇提供參考。除此之外還有好多方案(如Tape

struts2開發action 的方法以及通配符、路徑匹配原則、常量

ucc ces pan ide exce 三種 void 動態方法 div struts2開發action 的三種方法 1、繼承ActionSupport public class UserAction extends ActionSupport {

主要的關系型表設計

arch 部門 int body charset font 提前 mys 將他 多表關系主要可以分三種: 1.一對一關系 2.多對一關系(如:員工與部門) 3.多對多關系(如:老師與學生) 在mysql中建立這樣的關系型多表的一般方案如下: 一、一對一關系 可以建立一個主表

Java 處理 XML 的主流技術及介紹

lean code except 就是 輕量 性能 廠商 發送 x64 Java 處理 XML 的三種主流技術及介紹 顧彬, 馮晨, 和 喬彬2012 年 8 月 13 日發布 WeiboGoogle+用電子郵件發送本頁面 3

JAVA中this的用法的詳解

enc 所有 其它 println 用途 詳細介紹 示例 一次 調用構造   this關鍵字必須放在非靜態方法裏面 this關鍵字代表自身,在程序中主要的使用用途有以下幾個方面:    使用this關鍵字引用成員變量    使用this關鍵字在自身構造方法內部引用其它構造方

.sh 和 .ksh —— 主要的 Shell簡介(Korn shell)

lena 開發語言 特性 簡介 tex wildcard strong tar 新特性 和現在的開發語言一樣,語法上有些差異!  三種主要的 Shell 與其分身   在大部份的UNIX系統,三種著名且廣被支持的shell 是Bourne shell(AT&T sh

主要的二層端口類型

vid 其他 所有 過程 發送數據 用戶 agg ESS 以太網 三種主要的二層端口類型Access端口:又名連接端口,主要是用來連接用戶主機,僅能加入一個vlan,發送以太網幀時總是以untagged形式發送(去標簽) 對於access端口而言,其的pvid(缺省v

java開發webservice的幾方式(轉)

java開發webservice的幾種方式(轉) webservice的應用已經越來越廣泛了,下面介紹幾種在Java體系中開發webservice的方式,相當於做個記錄。 1.Axis2 Axis是apache下一個開源的webservice開發元件,出現的算是比較早了,也

JAVA開發Web Service幾框架介紹和選擇

下面分別介紹一個這幾種Web Service框架的基本概念1、JWS是Java語言對WebService服務的一種實現,用來開發和釋出服務。而從服務本身的角度來看JWS服務是沒有語言界限的。但是Java語言為Java開發者提供便捷釋出和呼叫WebService服務的一種途徑。2、Axis2是Apac

java代理模式靜態代理,動態代理,cglib代理

原文:https://segmentfault.com/a/1190000011291179 一、代理模式介紹 代理模式是一種設計模式,提供了對目標物件額外的訪問方式,即通過代理物件訪問目標物件,這樣可以在不修改原目標物件的前提下,提供額外的功能操作,擴充套件目標物件的功能。 簡言之,代