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

发布于 2024-12-05 08:29:00 字数 210 浏览 1 评论 0原文

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

I am developing a web application which uses 3 different databases(Oracle & MSSQL). This application contains spring and hibernate frameworks. In this application if databases goes down or some network issue comes I have to handle differently(While trying to access database). Currently if the above scenario comes I am getting SQLException as the least cause. How do I identify that SQLException thrown is because of network issue or some query/data issue?

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

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

发布评论

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

评论(2

初见你 2024-12-12 08:29:00

我想您只需从异常消息中提取此信息即可。
例如,对于 Oracle,会抛出带有以下消息的 SQLException 异常:

Io exception: The Network Adapter could not establish the connection

I guess you'll just have to extract this information from the exception message.
For example in case of Oracle a SQLException exception with following message is thrown:

Io exception: The Network Adapter could not establish the connection
诗化ㄋ丶相逢 2024-12-12 08:29:00

检查驱动程序的单独文档,并查看由于您描述的错误而引发的错误代码

更新

} 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++;
   }
}

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

Check the drivers' individual documentation and see what error codes are thrown as a result of the errors you described

UPDATE

} 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++;
   }
}

each database vendor provides their own error codes and states, if you check them you should be safe.

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