2012-07-05 61 views
0

我需要实现如何实现与Oracle驱动程序classes12一起使用的isValid连接?

boolean isValid(int timeout) 

像JDK6为java.sql.Connection中。但应该使用Oracle瘦驱动程序classes12。 很明显,我可以运行小查询,但超时是什么?我应该为它创建单独的线程吗? 谢谢。

+0

为什么不直接使用Oracle JDBC Driver for Java 6? – 2012-07-05 18:28:45

+0

我无法选择。它不依赖于我。如果可以的话 - 我从来不问这个问题。 – user710818 2012-07-05 18:30:38

+0

我不知道你的意思。你为什么不能使用它?考虑到您可以修改Java 1.2 Oracle JDBC驱动程序,以便您可以在Java 6下使用它,这是愚蠢的,因为您只能获得Java 6驱动程序。 – 2012-07-05 18:34:18

回答

1

对于OJDB7:

的isValid(INT超时) - 是对方法pingDatabase一个包装(int i)以
pingDatabase() - 使查询 “SELECT 'X' FROM DUAL”。
pingDatabase(int i) - 在单独的线程中进行相同的查询。

答案 - 是的,你必须在一个单独的线程中提出一个小的请求。

try { 
    Thread thread = new Thread(new Runnable() { 
     public void run() { 
      try { 
       result = ...make query and verify result 
      } catch(Throwable throwable) { 
       return false; 
      } 
     } 
    }); 
    thread.start(); 
    thread.join(timeout); 
    return result; 
catch(InterruptedException interruptedexception) { 
    return false; 
} 
相关问题