我写的一个程序里面需要不断的向oracle数据库中插入或更新数据,如果在插入或更新数据库的过程中由于服务器关机或网络中断等原因导致数据库连接中断就需要停止更新数据库的线程运行,那么如何检测数据库连接已关闭呢?如果在抛出的异常中判断的话,由于我只希望只在数据库连接中断的情况下停止线程运行,其他数据库错误则不停止,如何区分这两种情况呢?还有无更好的解决方法呢?多谢了

解决方案 »

  1.   

    Connection
    isClosed() 
              查询此 Connection 对象是否已经被关闭。

    isValid(int timeout) 
              如果连接尚未关闭并且仍然有效,则返回 true。
      

  2.   

    下面是api的解释
    isClosed
    boolean isClosed()
                     throws SQLException查询此 Connection 对象是否已经被关闭。如果在连接上调用了 close 方法或者发生某些严重的错误,则连接被关闭。只有在调用了 Connection.close 方法之后被调用时,此方法才保证返回 true。 
    通常不能调用此方法确定到数据库的连接是有效的还是无效的。通过捕获在试图进行某一操作时可能抛出的异常,典型的客户端可以确定某一连接是无效的。 
    返回:
    如果此 Connection 对象是关闭的,则返回 true;如果它仍然处于打开状态,则返回 false 
    抛出: 
    SQLException - 如果发生数据库访问错误所以,最好不实用isClosed来确定到数据库的连接是有效的还是无效的。试试isValid吧