如何判断数据库连接已关闭

52qhy 2011-11-29 10:27:44
我写的一个程序里面需要不断的向oracle数据库中插入或更新数据,如果在插入或更新数据库的过程中由于服务器关机或网络中断等原因导致数据库连接中断就需要停止更新数据库的线程运行,那么如何检测数据库连接已关闭呢?如果在抛出的异常中判断的话,由于我只希望只在数据库连接中断的情况下停止线程运行,其他数据库错误则不停止,如何区分这两种情况呢?还有无更好的解决方法呢?多谢了
...全文
720 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Derek-Chen 2011-11-29
  • 打赏
  • 举报
回复
思路:可以根据异常的类型(由于插入或更新数据失败或者服务器关机或网络中断等原因 等等,抛出的异常也不一样),可以捕获不同类型的异常,做不同的处理。
良才2015 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jayyounger 的回复:]
Connection
isClosed()
查询此 Connection 对象是否已经被关闭。

isValid(int timeout)
如果连接尚未关闭并且仍然有效,则返回 true。
[/Quote]
下面是api的解释
isClosed
boolean isClosed()
throws SQLException查询此 Connection 对象是否已经被关闭。如果在连接上调用了 close 方法或者发生某些严重的错误,则连接被关闭。只有在调用了 Connection.close 方法之后被调用时,此方法才保证返回 true。
通常不能调用此方法确定到数据库的连接是有效的还是无效的。通过捕获在试图进行某一操作时可能抛出的异常,典型的客户端可以确定某一连接是无效的。


返回:
如果此 Connection 对象是关闭的,则返回 true;如果它仍然处于打开状态,则返回 false
抛出:
SQLException - 如果发生数据库访问错误

所以,最好不实用isClosed来确定到数据库的连接是有效的还是无效的。

试试isValid吧
原来缘来 2011-11-29
  • 打赏
  • 举报
回复
Connection
isClosed()
查询此 Connection 对象是否已经被关闭。

isValid(int timeout)
如果连接尚未关闭并且仍然有效,则返回 true。
孟祥月 2011-11-29
  • 打赏
  • 举报
回复
那你就只捕获关机的异常
随心- 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chenhaijing 的回复:]
思路:可以根据异常的类型(由于插入或更新数据失败或者服务器关机或网络中断等原因 等等,抛出的异常也不一样),可以捕获不同类型的异常,做不同的处理。
[/Quote]
.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧