DBCP-validationQuery для различных баз данных
Я использую пул DBCP, и я хочу использовать testOnBorrow и testOnReturn чтобы проверить, действительно ли соединение.
К сожалению, я должен установить свойство validationQuery, чтобы заставить его работать.
вопрос: какое значение должно быть в validationQuery?
Я знаю, что: validationQuery должен быть оператором SQL SELECT, который возвращает хотя бы одну строку.
проблема в том, что мы используем различные базы данных (DB2, Oracle, hsqldb).
3 ответов
существует не только один validationQuery для всех баз данных. В каждой базе данных вы должны использовать разные validationQuery.
после нескольких часов поиска и тестирования я собрал эту таблицу:
база данных validationQuery Примечания
-
hsqldb -
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
-
Oracle -
select 1 from dual
-
в DB2 -
select 1 from sysibm.sysdummy1
-
в MySQL -
select 1
-
microsoft SQL Server -
select 1
(проверено на SQL-Server 9.0, 10.5 [2008]) -
postgresql -
select 1
-
Энгр -
select 1
-
-
values 1
-
H2 -
select 1
-
Жар -
select 1 from rdb$database
я написал об этом в своем блоге -запрос проверки для различных базы данных.
заранее есть пример класса, который возвращает validationQuery в соответствии с драйвером JDBC.
или у кого-нибудь есть лучшее решение?
для MySQL с драйвером Connector/J есть легкий запрос проверки, который просто отправляет пинг на сервер и возвращает фиктивный результирующий набор. Запрос проверки может быть (или должен начинаться) точно следующей строкой:
/* ping */
для получения дополнительной информации обратитесь к Проверка Соединений в руководстве драйвера MySQL