java 通过 Eclipse 连接到 Oracle 时出错

java error while connecting to oracle through eclipse

我一直在尝试使用 eclipse 连接到我的 oracle 数据库,但我一直收到此错误:

java.sql.SQLRecoverableException: Erreur d'E/S: The Network Adapter could not establish the connection

我已经尝试了很多代码,但似乎任何一个主题都有效,我还检查了 listener.ora 文件和 tnsnames.ora 但信息(端口号,SID)是正确的。 这是我的代码:

         package application;
         import java.sql.*;
         public class monInterface {


public static void main(String[] args)  {
    
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCLSYS","system","TPBDD");

        Statement st=con.createStatement();
        String sql="select * from film";
        ResultSet rs=st.executeQuery(sql);

        while(rs.next())
            System.out.println(rs.getInt(1)+" "+rs.getString(2));
        rs.close();
            } 

    catch (Exception e) {
        System.out.println(e);
        
    }}}

和 listener.ora:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\App\db_home)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\App\db_home\bin\oraclr19.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

和 tnsnames.ora:

ORACLR_CONNECTION_DATA =
    (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

我正在使用 oracle 10g 和 java se 8

如果有人能帮我解决这个问题,请多多指教。

您似乎正在连接到错误的 SID。代码中提到的 SID 是 ORCLSYS,而您的侦听器文件中的 SID 是 CLRExtProc。尝试按如下方式连接驱动程序,我认为它应该可以。

Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:CLRExtProc","system","TPBDD");

此外,如果您打算使用 Thin 驱动程序并且您的 SID 和服务名称相同,那么下面的格式也必须有所帮助。

Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/CLRExtProc","system","TPBDD");

我知道已经晚了,但我确实通过使用 ojdbc7 而不是 ojdbc6 解决了我的问题 谢谢大家的回答