与Java和oracle XE之间的数据源连接的OCI和THIN驱动程序连接有什么区别?

时间:2014-02-11 19:21:37

标签: java oracle database-connection

我正在编写以下代码,用于使用3路(OCI,THIN和数据源)连接java和Oracle 10g XE,代码运行成功,但不知道THIN和OCI与数据源之间的区别连接。

1 -

public static void main (String args[]) throws SQLException
 {
  OracleDataSource ods = new OracleDataSource();
  ods.setURL("jdbc:oracle:thin:hr/hr@localhost:1521/XE");
  Connection con = ods.getConnection();
  System.out.println("Connected");
  con.close();
 }

2-

public static void main(String args[])
     {
      try
      {
       // load oracle driver
      Class.forName("oracle.jdbc.driver.OracleDriver");
      // connect using Thin driver
      Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","hr","hr");
      System.out.println("Connected Successfully To Oracle");
      con.close();
      }
      catch(Exception ex)
      {
        ex.printStackTrace();
      }
 }

3 -

public static void main(String args[])
     {
      try
      {
       // load oracle driver
      Class.forName("oracle.jdbc.driver.OracleDriver");
      // connect using Native-API (OCI) driver
      Connection con = DriverManager.getConnection("jdbc:oracle:oci:@","hr","hr" );
      System.out.println("Connected Successfully To Oracle using OCI driver");
      con.close();
      }
      catch(Exception ex)
      {
        ex.printStackTrace();
      }
 }

2 个答案:

答案 0 :(得分:29)

Oracle为他们的数据库提供了四种类型的驱动程序,但我只会列举你问过的两种驱动程序。

OCI驱动程序是type 2 JDBC驱动程序,它使用本机代码连接到数据库。因此,它只是具有本机Oracle驱动程序的平台上的一个选项,并且它不是“纯粹的”Java实现。

Oracle的JDBC Thin驱动程序是一个type 4 JDBC驱动程序,它使用Java套接字直接连接到Oracle。它直接实现了Oracle的SQL * Net TCP / IP协议。因为它是100%Java,所以它独立于平台,也可以从Applet运行。 (不是你应该的)

答案 1 :(得分:3)

JDBC瘦驱动程序和JDBC OCI驱动程序都使用相同的网络协议。从服务器的角度来看,两者之间没有区别。 JDBC瘦驱动程序是100%Java,并且只有一个独立的jar(高级功能需要一些额外的jar)。 JDBC OCI驱动程序对OCI C客户端库进行JNI调用,因此依赖于要安装的Oracle完整客户端(OCI也是sqlplus使用的)。 Oracle建议使用大多数客户使用的JDBC瘦驱动程序。它是最快的驱动程序和最强大的驱动程序。