当使用JDBC与Oracle数据库时,如何发现连接是否真的超时或凭据是否错误



我已经有了连接字符串和DBA用户名。我接受用户的DBA密码。为了检查他提供的密码是否正确,我尝试使用

创建一个连接。
    String connString = "jdbc:oracle:thin:@" + connDesc;
    Properties props = new Properties();
    props.put("user", user);
    props.put("password", pwd);
    props.put("internal_logon", "sysdba");
    Class.forName("oracle.jdbc.OracleDriver").newInstance();
    Connection conn = DriverManager.getConnection(connString, props);

现在,当它抛出SQLException,我需要找到如果该异常是由于错误的密码或网络超时。有什么办法吗?还有,有没有比我现在做的更好的验证密码的方法?

您可以使用SQLException.getErrorCode()方法读取oracle特有的错误代码。

无效的用户名/密码组合,错误码为1017。

我不清楚你所说的"网络超时"到底是什么错误。如果消息是The Network Adapter could not establish the connection,那么您想要的错误代码应该是17002。(我得到这个错误试图连接到我的本地Oracle XE实例使用JDBC,但与TNS侦听器关闭。)

没有比使用用户名和密码创建到数据库的连接更好的验证用户名/密码的方法了。

最新更新