0

我正在通过我的 java 程序连接到 Oracle 11g DB。我使用的是服务名称而不是 SID。

addr = jdbc:oracle:thin:@hostIP:1521:ServiceName
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection(addr,un,pw);
Statement stat = con.createStatement();
ResultSet rs = stat.executeQuery(SELECT * from Table);

这很好用。我能够连接到数据库并检索数据。

但是,如果我传递服务 ID 而不是服务名称,则代码不起作用!我得到例外。我尝试了这里提到的解决方案 - Java JDBC - How to connect to Oracle using Service Name 而不是 SID。但我仍然看到同样的例外。

4

1 回答 1

0

addr 应该以这种方式为服务名称。

addr = jdbc:oracle:thin:@hostIP:1521/ServiceName

使用服务名称语法:

jdbc:oracle:thin:@//[host]:[tcpPort]/[service_name]

[host]:数据库服务器的主机名

[tcpPort]:数据库监听端口

[service_name]:数据库的系统标识符

例子:

jdbc:oracle:thin:@//myhost:1525/myserviceDB

请参考以下文章

https://docs.oracle.com/cd/E12518_01/central_office/pdf/141/html/co_ig/Output/appendix_url.htm

于 2022-02-22T17:37:05.577 回答