使用jdbc連接oracle時url有三種格式
格式一: Oracle JDBC Thin using an SID:
1
2
|
jdbc:oracle:thin: @host :port:SID Example: jdbc:oracle:thin: @localhost : 1521 :orcl |
這種格式是最簡單也是用得最多的
你的oracle的sid可以通過一下指令獲得:
1
2
|
sqlplus / as sysdba select value from v$parameter where name = 'instance_name' ; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import java.sql.*; public class TestOrclConnect { public static void main(String[] args) { ResultSet rs = null ; Statement stmt = null ; Connection conn = null ; try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); String dbURL = "jdbc:oracle:thin:@localhost:1521:orcl" ; conn = DriverManager.getConnection(dbURL, "admin2" , "123" ); System.out.println( "連接成功" ); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null ) { rs.close(); rs = null ; } if (stmt != null ) { stmt.close(); stmt = null ; } if (conn != null ) { conn.close(); conn = null ; } } catch (SQLException e) { e.printStackTrace(); } } } } |
格式二: Oracle JDBC Thin using a ServiceName:
1
2
|
jdbc:oracle:thin:@ //host:port/service_name Example:jdbc:oracle:thin:@ //localhost:1521/orcl.city.com |
注意這里的格式,@后面有//, port后面:換成了/,這種格式是Oracle 推薦的格式,因為對于集群來說,每個節點的SID 是不一樣的,但是SERVICE_NAME 確可以包含所有節點。
你的oracle的service_name可以通過以下方式獲得:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
sqlplus / as sysdba select value from v$parameter where name= 'service_names' ; import java.sql.*; public class TestOrclConnect { public static void main(String[] args) { ResultSet rs = null ; Statement stmt = null ; Connection conn = null ; try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); String dbURL = "jdbc:oracle:thin:@//localhost:1521/orcl.city.com" ; conn = DriverManager.getConnection(dbURL, "admin2" , "123" ); System.out.println( "連接成功" ); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null ) { rs.close(); rs = null ; } if (stmt != null ) { stmt.close(); stmt = null ; } if (conn != null ) { conn.close(); conn = null ; } } catch (SQLException e) { e.printStackTrace(); } } } } |
格式三:Oracle JDBC Thin using a TNSName:
1
2
|
jdbc:oracle:thin:@TNSName Example: jdbc:oracle:thin:@TNS_ALIAS_NAME |
我在谷歌上找了一些資源,要實現這種連接方式首先要建立tnsnames.ora文件,然后通過System.setProperty指明這個文件路徑。再通過上面URL中的@符號指定文件中的要使用到的資源。
這種格式我現在水平幾乎沒見過,對于我來說用得到這種的情況并不多吧。當然既然是通過配置文件來讀取指定資源肯定也可以直接將資源拿出來放在URL中,直接放在URL中的URL模版是下面這樣的(tnsnames.ora這個文件中放的就是@符號后面的那一段代碼,當然用文件的好處就是可以配置多個,便于管理):
1
|
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST=hostA)(PORT= 1522))(ADDRESS=(PROTOCOL=TCP)(HOST=your host)(PORT=1521)))(SOURCE_ROUTE=yes)(CONNECT_DATA=(SERVICE_NAME=your service_name))) |
jdbc連接代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
“` import java.sql.*; public class TestOrclConnect { public static void main(String[] args) { ResultSet rs = null ; Statement stmt = null ; Connection conn = null ; try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); String dbURL = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))" + "(CONNECT_DATA=(SERVICE_NAME=orcl.city.com)))" ; conn = DriverManager.getConnection(dbURL, "admin2" , "123" ); System.out.println( "連接成功" ); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null ) { rs.close(); rs = null ; } if (stmt != null ) { stmt.close(); stmt = null ; } if (conn != null ) { conn.close(); conn = null ; } } catch (SQLException e) { e.printStackTrace(); } } } } |
總結
以上所述是小編給大家介紹的使用JDBC連接ORACLE的三種URL格式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:https://blog.csdn.net/u012062455/article/details/52442838