首页 > 解决方案 > 通过eclipse连接到oracle时出现java错误

问题描述

我一直在尝试使用 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

所以请如果有人可以帮我解决这个问题。

标签: javaoracleeclipsedatabase-connection

解决方案


似乎您正在连接到不正确的 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");

推荐阅读