如果密码包含特殊字符,则无法使用JDBC连接到oracle数据库

我正在尝试使用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)

请帮助我解决问题。

回答:

当特殊字符出现在用户名,密码或类似的连接字符串@/等等,我们有内双引号括起来,例如,如果密码是它包含p@ssword我们在sqlplus连接为username/"p@ssword"@database

您可以在Java中尝试相同的方法,方法是使用转义符将密码括在双引号中,然后尝试更改

String pwd = "s@novi123";

String pwd = "\"s@novi123\"";

我不是Java专家,只是猜测scape字符应该是\;-)

以上是 如果密码包含特殊字符,则无法使用JDBC连接到oracle数据库 的全部内容, 来源链接: utcz.com/qa/425054.html

回到顶部