我从Java应用程序访问Sybase数据库。我可以连接到它,执行语句,所有这些都可以正常工作。
我的问题是我想正确处理连接失败时的情况。
根据我的理解,它可能会因以下原因而失败:
所以我的问题是:如何正确处理这些错误案例,我怎样才能识别出发生了哪一个?
答案 0 :(得分:1)
从几次测试中,我发现了不同的情况:
在这种情况下,数据库允许连接,但非常有限。您唯一可以调用的是更改密码的过程。返回的连接带有errorcode 4022的SQLWarning,以及说明:
的说明密码已过期,但您已 仍然允许登录。你必须 尽可能更改密码 继续。如果设置了登录触发器, 它不会被执行。
由于特定的错误代码,可以识别错误,并建议在客户端程序中更改密码。
两种情况都没有区别。在请求连接时,它会抛出一个SQLException,它使用error code 4002链接到SQLWarning作为下一个异常,并且有一个非常简单的描述:
登录失败。
因此,没有办法专门处理这些案件。
当密码即将过期时,返回的连接将包含一个code 4023的SQLWarning,说明:
您的密码将在%s天后过期。
这允许在客户端程序中显示警告,建议更改密码。
答案 1 :(得分:0)
像处理来自数据库的其他消息一样处理它。捕获异常日志消息(这将帮助您确定原因。同时向用户显示发生数据库错误或无法访问数据库的消息。