我通过我的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 instead of SID . 但我仍然看到同样的例外 .