【程式設計】java jdbc/ojdbc 連結oracle的三種方式

zhangsharp20發表於2015-01-02
前言
  本文是一篇學習筆記,學習如何透過java jdbc /ojdbc 連線oracle的幾種方式。
一 使用方法
方法一:使用service_name 連線oracle  
jdbc:oracle:thin:@//:/ 
例如: jdbc:oracle:thin:@//10.10.10.1:1521/TDB
注意這裡的格式,@後面有//, 這是與使用SID的主要區別。
對於叢集來說,每個節點的SID 是不一樣的,但是SERVICE_NAME 確可以包含所有節點。

方法二: 使用SID 連線oracle 
jdbc:oracle:thin:@:: 
Example: jdbc:oracle:thin:@10.10.10.1:1521:testdb1 
注意 該方法已經不做推薦,oracle 官方推薦使用service_name 

方法三:使用tnsname 連線oracle
jdbc:oracle:thin:@ 
Example: jdbc:oracle:thin:@TESTDB 

二 原始碼

  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. public class testDB {
  7.  public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
  8. # public static final String DBURL = "jdbc:oracle:thin:@127.0.0.1:1521/testdb1"; //sid 格式 testdb1是sid
  9. # public static final String DBURL = "jdbc:oracle:thin:@//127.0.0.1:1521/TDB";   //servicename TDB是service_name
  10.  public static final String DBUSER = "test\";
  11.  public static final String DBPASSWORD = \"xxx\";
  12.  
  13.  public static final String DBURL = \"jdbc:oracle:thin:@TESTDB\"; //tnsname 格式
  14.  public static void main(String[] args) throws Exception
  15.  {
  16.    Connection con = null;
  17.    PreparedStatement ps = null;
  18.    ResultSet rs = null;
  19.   String strSQL = \"select count(*) from tsa_dim_deal\";
  20. # System.setProperty(\"oracle.net.tns_admin\", \"/home/admin/oracle\");//使用tnsname 方法的時候 需要制定tnsname.ora所在的資料夾絕對路徑
  21.   Class.forName(DBDRIVER).newInstance();
  22.   con = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
  23.   ps = con.prepareStatement(strSQL);
  24.   rs = ps.executeQuery();
  25.   while(rs.next())
  26.   {
  27.    System.out.println(\"num:\"+rs.getString(1));
  28.   }
  29.   rs.close();
  30.   ps.close();
  31.   con.close();
  32.  }
  33. }

附錄:
[qilong.yangql@rac1 oracle]$ more tnsnames.ora
testdb=
  (DESCRIPTION =
    (FAILOVER = ON)
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.2)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.3)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.4)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.5)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.6)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = tdb)
    )
  )
注意 本文裡面 service_name tdb 和tnsname (testdb) 故意設定的不一樣.

三  參考:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29802484/viewspace-1387542/,如需轉載,請註明出處,否則將追究法律責任。

相關文章