我已经有了连接字符串和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侦听器关闭。)
没有比使用用户名和密码创建到数据库的连接更好的验证用户名/密码的方法了。