我正在尝试使用jdbc从Selenium连接到oracle数据库,并且得到以下消息:
java.sql.SQLRecoverableException: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
我能够从pl / sql成功连接到该数据库,但是从jdbc出现此错误。下面是代码。有人可以在这里帮助我吗?
@Test
public void test11 () {
String server = "host";
String port = "1521";
String database = "db";
String user = "user";
String pwd = "pw";
try {
String url = "jdbc:oracle:thin:@" + server + ":" + port + "/" + database;
Connection con = DriverManager.getConnection(url, user, pwd);
Statement stmt = con.createStatement();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
LISTENER.ORA:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = "net_service_name")
(ORACLE_HOME = C:\oracle\product\10.2.0\client_1)
(SID_NAME = "net_service_name")
)
(SID_DESC =
(GLOBAL_DBNAME = "service_name")
(ORACLE_HOME = C:\oracle\product\10.2.0\client_1)
(SID_NAME = "service_name")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = "host")(PORT = 1521))
)
)
)
TNSNAMES.ORA:
"net_service_name"=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = "host")(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = "service_name")
)
)
答案 0 :(得分:0)
我认为您使用不正确
String url = "jdbc:oracle:thin:@" + server + ":" + port + "/" + database;
:代替/
尝试使用参数
public static void conn() throws ClassNotFoundException, SQLException{
Connection con=DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orclpdb", "HR", "HR");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select count(*) from dual");
while(rs.next())
System.out.println(rs.getInt(1));
con.close();
}