【发布时间】:2014-02-21 00:18:17
【问题描述】:
我正在尝试使用 JDBC 连接到 oracle 数据库。
下面是代码::
public class OraclePwdTest {
static{
try {
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String ip ="192.168.20.145";
String sid = "oradg";
int port = 1521;
String user = "sys";
String pwd = "s@novi123";
Connection conn = null;
String url = "jdbc:oracle:thin:"+"(DESCRIPTION =" +
"(ADDRESS_LIST =" +
"(ADDRESS = (PROTOCOL = TCP)(HOST = "+ ip +")" +
"(PORT = " + port + "))" +
")" +
"(CONNECT_DATA = (SRVR=DEDICATED) " +
"(SID = " + sid +
"))" +
")";
java.util.Properties prop = new java.util.Properties ();
prop.put ("user", user);
prop.put ("password", pwd);
prop.put ("internal_logon", "sysdba");
try {
conn = DriverManager.getConnection(url,prop);
System.out.println("Connected");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
如果密码具有特殊字符,如#@...,则上述代码不起作用。它适用于普通密码。
我收到以下错误消息::
java.sql.SQLException: ORA-01017: 无效的用户名/密码;登录被拒绝
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:389)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:382)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:573)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:431)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:366)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:752)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:366)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at TestOracleConnection.main(TestOracleConnection.java:54)
请帮我解决问题。
【问题讨论】:
-
当您使用
sqlplus使用特殊字符进行连接时,是否有效? -
附注:为什么要在应用程序代码中以 SYSDBA 身份连接。这听起来是个糟糕的主意。
-
no..with sqlplus 也不起作用..
-
如果使用命令 sqlplus user/password@SID 对 dos 命令不起作用,那么它本身的用户/密码组合是错误的...尝试使用有效的用户/密码。
-
如果它在 SQL*Plus 中不起作用,那么显然您的密码是错误的。 @Jay:再也没有“DOS”了……