執行個體代碼講解Java串連Oracle資料庫的各種方法

來源:互聯網
上載者:User
oracle|資料|資料庫 java與oracle的介面:
  在資料庫中運行JAVA可以說是ORACLE8i的最令人激動的新特性。在你建立的使用ORACLE8i 資料庫的應用程式中,你可以使用與JAVA有關的新特徵,輕鬆的將程式發布到INTERNET或INTRANET上。
  
   Methods for Using Java in ORACLE
  
  大家都知道JAVA在跨平台開發與INTERNET開發中已經比較流行,ORACLE8i及以後的版本中都包含了對在資料庫中運行JAVA的擴充支援,這裡有兩種方法可以使用:
  
  JDBC:與ODBC類似, JDBC 提供了一個驅動介面使你可以在JAVA程式中訪問資料庫。註:JDBC驅動內嵌在資料庫中虛擬機器中。
  
  SQLJ:是一個JAVA先行編譯器,它可以將內嵌的SQL語句轉化為JAVA語句.SQLJ的使用與運行機理與其它ORACLE的與編譯器(如Pro*C,Pro*COBOL)類似。實際上,為了使我們形象的記住SQLJ提供的功能,我們也可以直接將SQLJ改名為Pro*Java。
  
  將JAVA整合到資料庫中是雙向的。也就是說你可以在JAVA中調用SQL與PL/SQL,也可以在SQL與PL/SQL中調用JAVA。JAVA程式可以直接通過JDBC驅動調用SQL與PL/SQL,反過來,你也可以在SQL與PL/SQL中直接調用JAVA。在資料庫中,JAVA命名空間直接映射到資料庫模式的命名空間中,這樣可以方便JAVA的存取與調用。資料庫同時提供擴充的DDL語句,通過這些語句,你可以象建立一個預存程序一樣在資料中建立內嵌的JAVA程式。
  
   Features of ORACLE JDBC Drivers
  
  在ORACLE8i中有三種類型的JDBC驅動,他們都使用相同的 syntax, APIs, and Oracle extensions,以使JAVA代碼在robust clients、Web-based Java applets, and Java stored procedures之間保持輕便靈活:三種類型如下:
  1. JDBC OCI: 此驅動類似於傳統的ODBC 驅動。因為它需要Oracle Call Interface and Net8,所以它需要在運行使用此驅動的JAVA程式的機器上安裝用戶端軟體
  2. JDBC Thin: 這種驅動一般用在運行在WEB瀏覽器中的JAVA程式。它不是通過OCI or Net8,而是通過Java sockets進行通訊 ,因此不需要在使用JDBC Thin的用戶端機器上安裝用戶端軟體。
  3. JDBC KPRB: 這種驅動由直接儲存在資料庫中的JAVA程式使用,如Java Stored Procedures 、triggers、Database JSP's。It uses the default/ current database session and thus requires no additional database username, password or URL.
  
  如何配置使JAVA可以通過Oracle JDBC Drivers串連到資料庫:1.安裝Sun JDK. 
  2. 修改PATH環境變數,使其指向JDK的bin目錄
  3. 設定CLASSPATH環境變數,使其指向正確的JDK的lib及oracle的JDBC介面。
  CLASSPATH = ".;????"
  3. 運行"java –version" ,驗證java的版本。
  
  如何在不同的作業系統上根據介面類型設定用戶端:
  對JDBC THIN介面:
  在windows與unix下的設定方法一樣:
  1.根據jdk的版本,只需要將classesxx.zip拷貝到指定的目錄,不需要安裝Oracle Client。在裝完資料庫後,該檔案會在$ORACLE_HOME/jdbc/lib目錄下。2.設定CLASSPATH,使其包含上面的classesxx.zip
  3.根據需要,拷貝oracle的其它zip檔案並設定CLASSPATH
  
   對JDBC OCI介面:
  Fow Windows:
  1.安裝Oracle Client.
  2.根據jdk的版本,設定CLASSPATH,使其包含正確的classesxx.zip
  3.根據需要設定CLASSPATH,使其指向Oracle的其它zip檔案
  4.設定PATH,使其包含$ORACLE_HOME\bin目錄
  
   For unix:
  1.安裝Oracle Client.
  2.根據jdk的版本,設定CLASSPATH,使其包含正確的classesxx.zip
  3.根據需要設定CLASSPATH,使其指向Oracle的其它zip檔案
  4.設定LD_LIBRARY_PATH,使其包含$ORACLE_HOME/lib目錄
  
   備忘:
  classesxx.zip一般在ORACLE_HOME\jdbc\lib目錄下。
  
     在ORACLE_HOME\jdbc\lib目錄下的與Oracle JDBC Drives驅動有關的檔案的 解釋:
   - classes12.zip
    Classes for use with JDK 1.2.x. It contains the JDBC driver
    classes except classes necessary for NLS support in Object and
    Collection types.
  
   - nls_charset12.zip
    NLS classes for use with JDK 1.2.x. It contains classes necessary
    for NLS support in Object and Collection types.
  
   - classes12_g.zip
    Same as classes12.zip, except that classes were compiled with
    "javac -g".
  
   JDBC串連資料庫的文法:
  JDBC THIN:
  
  
  Connection conn=
      DriverManager.getConnection
       ("jdbc:oracle:thin:@dlsun511:1521:ora1","scott","tiger");
                  |    |   |
              machine(ip@) : port# : sid 
  
  JDBC OCI:
  
  Connection conn=
      DriverManager.getConnection
       ("jdbc:oracle:oci8[9]:@RAC","scott","tiger");
                  |
                  Net Service
  
  JDBC THIN與JDBC THIN對比:
  相同之處:
     The JDBC Thin, JDBC OCI, and JDBC Server drivers all provide the same functionality. They all support the following standards and features:
      * JDBC 2.0
      * Partial JDBC 3.0 (in JDBC driver version 9.2)
      * the same syntax and APIs
      * the same Oracle extensions
  主要是JDBC OCI 介面比JDBC THIN介面效率高!
  
  How does one connect with the JDBC Thin Driver?
     The the JDBC thin driver provides the only way to access Oracle from the Web (applets). It is smaller and slower than the OCI drivers.
  import java.sql.*;
  
  class dbAccess {
   public static void main (String args []) throws SQLException
   {
    DriverManager.registerDriver (
     new oracle.jdbc.driver.OracleDriver()
    );
  
    Connection conn = DriverManager.getConnection
     ("jdbc:oracle:thin:@dbhost:1521:ORA1", "scott", "tiger");
             // @machine:port:SID,  userid, password
  
    Statement stmt = conn.createStatement();
    ResultSet rset = stmt.executeQuery (
     "select BANNER from SYS.V_$VERSION"
    );
    while (rset.next())
      System.out.println (rset.getString(1));  // Print col 1
    stmt.close();
   }
  }
  How does one connect with the JDBC OCI Driver?
     One must have Net8 (SQL*Net) installed and working before attempting to use one of the OCI drivers.
  
  
  import java.sql.*;
  class dbAccess {
   public static void main (String args []) throws SQLException
   {
    try {
     Class.forName ("oracle.jdbc.driver.OracleDriver");
    } catch (ClassNotFoundException e) {
     e.printStackTrace();
    }
  
    Connection conn = DriverManager.getConnection
      ("jdbc:oracle:oci8:@ORA1", "scott", "tiger");
         // or oci9 @Service, userid, password
    Statement stmt = conn.createStatement();
    ResultSet rset = stmt.executeQuery (
     "select BANNER from SYS.V_$VERSION"
    );
    while (rset.next())
     System.out.println (rset.getString(1)); // Print col 1
    stmt.close();
   }
  }
  How does one connect with the JDBC KPRB Driver?
     One can obtain a handle to the default or current connection (KPRB driver) by calling the OracleDriver.defaultConenction() method. Please note that you do not need to specify a database URL, username or password as you are already connected to a database session. Remember not to close the default connection. Closing the default connection might throw an exception in future releases of Oracle.
  import java.sql.*;
  
  
  class dbAccess {
   public static void main (String args []) throws SQLException
   {
    Connection conn = (new
     oracle.jdbc.driver.OracleDriver()).defaultConnection();
  
    Statement stmt = conn.createStatement();
    ResultSet rset = stmt.executeQuery (
     "select BANNER from SYS.V_$VERSION"
    );

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。