我最近更改了一个应用程序,将数据库用户名和密码存储在配置文件中( gasp 密码以明文形式存储在配置文件中)。
应用程序现在要求用户输入用户名和密码,然后才能继续。
现在,新版本的应用程序必须询问SQLException
以确定导致异常的原因(无效的用户名或密码,数据库服务器无法访问,连接超时等)
以便它可以决定下一步该做什么(提示用户更正用户名和密码,告诉用户稍后在网络问题排序后重试,重新连接不可靠等等。)
试图找到与这些(和其他)原因相关的SQLException
errorCodes(SQLException.getErrorCode())几乎是不可能的,我们被迫猜测(有时可能是危险的)。
Java API文档说这是特定于供应商的。
是否有人可以使用Sybase JConnect JDBC drivers
设置的错误代码?
JRE 1.5
jConnect for JDBC 2.0 (spec version 5.2)
Sybase IQ 12.7
答案 0 :(得分:1)
似乎捕获的SQLException中的大多数errorCodes都是0。
这意味着您必须查看Connection
/ Statement
/ ResultSet
的SQLWarnings
connection.getWarnings();
或链接到抛出异常的异常
sqlException.getNextException();
这里棘手的问题是,链式异常可能是SQLException
或IOException
,也可能是其他人(不记得遇到其他异常)。