Я использую пул DBCP и хочу использовать testOnBorrow и testOnReturn, чтобы проверить, действительно ли соединение.
К сожалению, мне нужно установить свойство validationQuery, чтобы оно работало.
Вопрос: какое значение должно быть в validationQuery?
Я знаю, что: validationQuery должен быть оператором SQL SELECT, который возвращает хотя бы одну строку.
Проблема в том, что мы используем разные базы данных (DB2, Oracle, hsqldb).
Ответы:
Для всех баз данных существует не только один запрос проверки. В каждой базе данных вы должны использовать разные запросы проверки.
После нескольких часов поиска в Google и тестирования я собрал эту таблицу:
Примечания к запросу
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
select 1 from dual
select 1 from sysibm.sysdummy1
select 1
select 1
(проверено на SQL-Server 9.0, 10.5 [2008])select 1
select 1
values 1
select 1
select 1 from rdb$database
Я писал об этом в своем блоге - запрос на валидацию для различных баз данных .
Заранее есть пример класса, возвращающего validationQuery согласно JDBC-драйверу.
Или у кого-нибудь есть лучшее решение?
источник
select 1
также работает для Microsoft SQL Server 2014 - 12.0.2000.8 (X64), 20 февраля 2014 г. 20:04:26, Standard Edition (64-разрядная версия) в Windows NT 6.1 <X64> (сборка 7601: пакет обновления 1) (гипервизор)select 1
для Hive and ImpalaДля MySQL с драйвером Connector / J существует облегченный запрос проверки, который просто отправляет ping на сервер и возвращает фиктивный набор результатов. Запрос на проверку может быть (или должен начинаться с) в точности следующей строкой:
/* ping */
Для получения дополнительной информации см. Проверка соединений в руководстве по драйверу MySQL.
источник
Для Informix запрос проверки: выберите 1 из systables
источник