Как я могу определить, является ли драйвер JDBC Тип 4? - PullRequest
3 голосов
/ 10 февраля 2011

У нас есть приложение, которое работает на Java 1.6 и имеет возможность общаться с системами RDBMS через пользовательские плагины.Нам не важно, какой тип базы данных есть у клиента, но мы решили, что по разным причинам требуется драйвер типа 4.

Я хочу программно решить, является ли драйвер типа 4, чтобы яЯ могу сразу отклонить его, а не тратить время на отладку проблем позже, только чтобы выяснить, что драйвер не относится к типу 4. Поскольку я не знаю, кто производитель, я не могу просто посмотреть номер версии.Я посмотрел на Driver.jdbcCompliant (), но это не является обязательным условием для драйвера, являющегося Типом 4. Я также рассмотрел создание Соединения и затем размышлял над ним, чтобы видеть, реализует ли он определенные методы, такие как isValid (), но опять же я понял, что это не обязательно гарантирует, что драйвер типа 4. Любые предложения?

1 Ответ

0 голосов
/ 10 февраля 2011

Редактировать: Похоже, я все равно говорил о чем-то другом!

Получите DatabaseMetaData через Connection.getMetaData() и убедитесь, что getJDBCMajorVersion () > = 4. Возможно, вы захотите перехватить NoSuchMethodException при вызове этого метода, поскольку только драйвер JDBC 3.0+ будет иметь это.

Редактировать: Хм, похоже, что это должно быть правильно, но ... Oracle, кажется, не реализует это правильно, так как я получаю 11.2 для версии JDBC. То же самое я получаю для версии драйвера. Спасибо Оракул!

Если вы не можете рассчитывать на методы, специально предназначенные для этого, мне кажется, что вы можете вызывать только такие методы, как createClob() на Connection и перехватывать NoSuchMethodException. Это или добавить специальную обработку для конкретных поставщиков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...