识别由于网络问题导致的SQLException

时间:2011-09-20 06:38:51

标签: java sql hibernate spring sqlexception

我正在开发一个使用3个不同数据库(Oracle和MSSQL)的Web应用程序。该应用程序包含spring和hibernate框架。在此应用程序中,如果数据库出现故障或出现一些网络问题,我必须以不同方式处理(尝试访问数据库时)。目前,如果出现上述情况,我将SQLException作为最小原因。如何识别抛出的SQLException是由于网络问题还是某些查询/数据问题?

2 个答案:

答案 0 :(得分:1)

检查驱动程序的个别文档,看看由于您所描述的错误而引发的错误代码

<强>更新

} catch (SQLException se) {
   int count = 1;
   while (se != null) {
       System.out.println("SQLException " + count);
       System.out.println("Code: " + se.getErrorCode());
       System.out.println("SqlState: " + se.getSQLState());
       System.out.println("Error Message: " + se.getMessage());

       se = se.getNextException();
       count++;
   }
}

每个数据库供应商都提供自己的错误代码和状态,如果您检查它们,则应该是安全的。

答案 1 :(得分:1)

我猜您只需从异常消息中提取此信息即可。 例如,在Oracle的情况下,抛出以下消息的SQLException异常:

Io exception: The Network Adapter could not establish the connection