2011-02-10 10 views
3

우리는 Java 1.6에서 실행되는 응용 프로그램을 가지고 있으며 사용자 정의 플러그인을 통해 RDBMS 시스템과 대화 할 수 있습니다. 우리는 고객이 가지고있는 데이터베이스의 유형에 상관하지 않지만 여러 가지 이유로 Type 4 드라이버를 요구하기로 결정했습니다.JDBC 드라이버가 유형 4인지 여부를 어떻게 확인할 수 있습니까?

드라이버가 Type 4가 아닌지 직접 디버깅 문제를 해결하는 것보다 즉시 거부 할 수 있도록 드라이버를 Type 4로 프로그래밍 방식으로 결정하고 싶습니다. 납품업자는, 나는 다만 버전 번호를 볼 수 없다. 필자는 Driver.jdbcCompliant()를 살펴 봤지만 이것이 Type 4 인 드라이버에 대한 필수 조건은 아닙니다. 또한 Connection을 작성한 다음이를 반영하여 isValid()와 같은 특정 메소드를 구현하는지 확인했습니다. , 그러나 다시 나는 이것이 반드시 드라이버가 Type 4임을 보장하지는 않는다는 것을 깨달았다. 어떤 제안?

+1

나는 길이 있다고 생각하지 않습니다. –

답변

0

편집 : 어쨌든 나는 다른 무언가에 대해 이야기하고있는 것처럼 보입니다!

Connection.getMetaData()를 통해 DatabaseMetaData을 얻고 getJDBCMajorVersion()> = 4. 당신은 단지 JDBC는 3.0 드라이버가있을 것이기 때문에, 그 메소드를 호출 할 때 NoSuchMethodException을 잡으려고 할 수 있는지 확인합니다.

편집 : 흠,이게 맞을 것 같지만 ... 오라클은 올바르게 구현하지 않는 것 같습니다. JDBC 버전으로 11.2를 얻었 기 때문입니다. 그것은 드라이버 버전에서 얻은 것과 같은 것입니다. Oracle에 감사드립니다!

특별히 설계된 메서드를 사용할 수 없다면 createClob()과 같은 메서드를 Connection에 호출하고 NoSuchMethodException을 catch하는 것이 유일한 방법입니다. 특정 벤더에 대한 특별 처리를 추가하거나 추가하십시오.

+0

주/부 버전은 지원되는 JDBC 버전을 나타내며 드라이버 유형은 아닙니다. 예를 들어 jdbc 3에 유형 4 드라이버가 있고 jdbc에서 getJDBCMajorVersion()을 호출하는 중 3이 4를 반환하지 않습니다. –

+0

@Pangea : 유형보다는 JDBC 버전에 관한 것 같지만 잘못된 것일 수 있습니다. – ColinD

+0

답변을 주셔서 감사합니다. 나는 실제로 JDBC 버전이 아닌 Type에 관심이있다. 언급 된 Pangea와 마찬가지로, 4.0 스펙이 아닌 JDBC 3.0 스펙을 구현하는 유형 4 드라이버를 가질 수 있으며 그 반대의 경우도 가능합니다. 우리가 신경 쓰는 것은 유형 4 드라이버와 함께 제공되는 의미 (즉, 원시 프로토콜)입니다. Java 1.6이 필요하기 때문에 드라이버가 Java 1.6과 호환되는 것이 중요합니다 (일부 드라이버는 JDK6 이전 버전으로 컴파일되었으며 JDK6과 호환되지 않습니다.이 드라이버를 발견하는 방법도 잘 모르겠습니다) . 그러나 드라이버 유형에서 가장 중요합니다. –

관련 문제