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 解决了我的问题
谢谢大家的回答
我一直在尝试使用 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 解决了我的问题 谢谢大家的回答