当将 JDBC 与 Oracle DB 结合使用时,如何确定连接是否确实超时或凭据是否错误?

发布于 2024-12-04 17:44:52 字数 528 浏览 1 评论 0原文

我已经有了连接字符串和 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);

Now 创建一个连接,当它抛出 SQLException 时,我需要查找该异常是否是由于密码错误或网络超时造成的。有什么办法可以做到这一点吗? 另外,有没有比我目前正在做的更好的方法来验证密码?

I already have the connection string and DBA username. I accept DBA password from the user.
To check if the password provided by him is correct, I try to create a connection using

    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);

Now when it throws SQLException I need to find if that exception is because of wrong password or network timeout. Is there any way to do that?
Also, is there any better way to validate password than what I'm currently doing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幸福丶如此 2024-12-11 17:44:52

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

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

我不清楚“网络超时”到底是什么错误。如果消息是网络适配器无法建立连接,那么您想要的错误代码将显示为 17002。(我在尝试使用 JDBC 连接到本地 Oracle XE 实例时遇到此错误,但使用TNS 侦听器关闭。)

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

You can use the SQLException.getErrorCode() method to read the Oracle-specific error code for the error.

For an invalid username/password combination, the error code is 1017.

It's not clear to me exactly what error you mean by 'network timeout'. If the message is The Network Adapter could not establish the connection, then the error code you want appears to be 17002. (I got this error attempting to connect to my local Oracle XE instance using JDBC but with the TNS listener shut down.)

There isn't a better way of validating a username/password than attempting to create a connection to the database using that username and password.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文