科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Linux系统下的Oracle数据库编程详解 (3)

Linux系统下的Oracle数据库编程详解 (3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文探讨了在Linux操作系统下用C和Java语言访问Oracle数据库的2种方法,并给出了相应的例程源代码。

作者:李俊平 来源:计算机与信息技术 2007年10月15日

关键字: 操作系统 编程 ORACLE Linux

  • 评论
  • 分享微博
  • 分享邮件

4. JDBC编程

在Linux下用JDBC访问Oracle数据库主要有以下几个技术要点:

(1) 注册Oracle的JDBC驱动。有两种方式,一种是调用class.forName方法:

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

另一种是调用DriverManager类的registerDriver方法:

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

(2) 获取Oracle数据库的连接。也有两种方式。一是调用OCI驱动程序,OCI驱动程序利用Java本地化接口(JNI),通过Oracle客户端软件与数据库进行通讯。

Connection conn=DriverManager.getConnection
("jdbc:oracle:oci8:@","test","test");

另一种方式是调用Thin驱动程序。Thin驱动程序是纯Java驱动程序,它直接与数据库进行通讯。

conn=DriverManager.getConnection
("jdbc:oracle:thin:@10.1.14.34:1521:MyDB","test","test");

为了获得最高的性能,Oracle公司建议在客户端软件的开发中使用OCI驱动程序。

(3) 建立Statament和结果集对象,执行SQL语句,结果返回到结果集。

Statement pstmt=conn.createStatement();
      ResultSet rset= pstmt.executeQuery(query)

(4) 处理结果集,显示数据。

以下是遍历student数据表的Java源程序Stu.java,源程序中包含了两种注册Oracle驱动的方式,以及OCI和Thin两种连接数据库的方法(因程序中不可能同时使用两种方法,所以另一种方法被注释)。

/* 导入Java类 */
import java.sql.*;
/* 主类 */
public class Stu
{
 public static void main(String argv[]) throws SQLException
 {
 
 /* 声明并初始化变量 */
 String query = new String("SELECT id,name,score FROM student");
 String name;
 int id,score;
 Connection conn=null;
 try{
 /*第一种注册JDBC的Oracle驱动的方法*/
 //Class.forName("oracle.jdbc.driver.OracleDriver");
/*第二种注册JDBC的Oracle驱动的方法*/
 DriverManager.registerDriver
(new oracle.jdbc.driver.OracleDriver());
 }catch(Exception e){
 System.out.println("Could not load drive:"+e);
 System.exit(-1);
}   
/*利用Thin驱动程序获取Oracle连接*/
 //conn=DriverManager.getConnection
("jdbc:oracle:thin:@10.1.14.34:1521:MyDB","test","test");
    //System.out.println("Connected with THIN CLIENT!");
    /*利用OCI驱动程序获取Oracle连接*/
    conn=DriverManager.getConnection
   ("jdbc:oracle:oci8:@","test","test");
    System.out.println("Connected with OCI8!\n");
    /* 使用try ... catch抓取并处理例外 */
    try {
      Statement pstmt=conn.createStatement();
      /* 执行SQL语句 */
      ResultSet rset= pstmt.executeQuery(query);
      /* 循环处理JDBC结果集的数据 */
      while(rset.next()) {
        id=rset.getInt(1);
        name = rset.getString(2);
        score=rset.getInt(3);
        System.out.println("ID=" + id);
        System.out.println("NAME=" + name);
        System.out.println("SCORE=" + score);
        System.out.println("---------------");
      }
      /* 关闭JDBC结果集 */
      rset.close();
      /* 关闭动态SQL语句 */
      pstmt.close();
    }
    catch(SQLException e) {
      System.out.println("出现SQL例外:" + e.getMessage());
    }
    conn.close();
  }
}
    编译、执行上述源程序,可显示出student表中所有记录。
    $javac Stu.java
    $java Stu

5. 结束语

从Oracle公司的产品策略和发展趋势来看,Java将成为Oracle数据库最有力的工具。Oracle公司在Oracle 8i中引入JVM,并在Oracle 9i中已经发展得极为成熟。这使得我们不仅可以利用JDBC和SQLJ访问Oracle数据库,也可以在Oracle的PL/SQL中执行用Java编写的存储过程和函数,两者的结合是双向和无缝的。Java使Oracle正在成为一个平台无关的数据库,正如Oracle公司的发展目标所说的那样:没有操作系统,只有Oracle和Internet。

参考文献:

[1]Bjarki Holm,John Carnell,康博 译. Oracle 9i Java 程序设计. 清华大学出版社,2002.

[2]Steve Bobrowski, 刘艺 等译. Oracle8i for Linux实用指南. 机械工业出版社,2001.

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章