最近,我更改了一个应用程序,将数据库用户名和密码存储在配置文件中(配置文件中以纯文本形式存储的密码)。
应用程序现在要求用户输入用户名和密码,然后才能继续。
新版本的应用程序现在必须询问SQLException以确定导致异常的原因(无效用户名或密码、数据库服务器不可达、连接超时等)。这样,它就可以决定下一步该做什么(提示用户更正用户名和密码,告诉用户在网络问题被排序后再试一次,无形地重新连接等等)。
试图找到与这些(和其他)原因相关的SQLException errorCodes (SQLException.getErrorCode())几乎是不可能的,我们不得不猜测(有时可能是危险的)。
Java文档说这是特定于供应商的。
有人有可以由Sybase JConnect JDBC drivers设置的错误代码吗?
JRE 1.5jConnect for JDBC 2.0 (spec version 5.2)Sybase IQ 12.7发布于 2008-09-26 12:24:46
看来,捕获的errorCodes中的大多数SQLException都是0。
这意味着您必须检查Connection/Statement/ResultSet's SQLWarnings。
connection.getWarnings();或链接到引发的异常上的异常。
sqlException.getNextException();这里的棘手之处在于,链接的异常可能是SQLException或IOException,也可能是其他的(不记得遇到过其他人)。
https://stackoverflow.com/questions/133112
复制相似问题