我使用DBCP池,我想用testOnBorrow和testOnReturn來測試連接是否仍然有效。
不幸的是我必須設置屬性validationQuery來使它工作。DBCP - validationQuery對於不同的數據庫
問題:validationQuery應該有什麼價值?
我知道,validationQuery必須是一個SQL SELECT語句,它返回至少一行。
問題是我們使用各種數據庫(DB2,Oracle,hsqldb)。
我使用DBCP池,我想用testOnBorrow和testOnReturn來測試連接是否仍然有效。
不幸的是我必須設置屬性validationQuery來使它工作。DBCP - validationQuery對於不同的數據庫
問題:validationQuery應該有什麼價值?
我知道,validationQuery必須是一個SQL SELECT語句,它返回至少一行。
問題是我們使用各種數據庫(DB2,Oracle,hsqldb)。
所有數據庫不僅有一個validationQuery。在每個數據庫上,你必須使用不同的validationQuery。
谷歌搜索和測試我收集這個表的幾個小時後:
數據庫validationQuery指出
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
我寫了關於它在我的博客 - validation query for various databases。
事先有一個類的例子,它根據JDBC驅動程序返回validationQuery。
還是有人有更好的解決方案?
+1,'select 1'在MySQL上工作(編輯你的答案) –
select 1在postgresql上也有效 –
'select 1'也適用於Microsoft SQL Server 2014 - 12.0.2000.8(X64),2014年2月20日20: 04:26,Windows NT 6.1上的標準版(64位)
對於帶有Connector/J驅動程序的MySQL,有一個輕量級驗證查詢,它只是向服務器發送一個ping並返回一個虛擬結果集。 驗證查詢可以是(或應開始)恰好以下字符串:
/* ping */
有關詳細的Infor參考Validating Connections在MySQL驅動程序手冊
同時適用於Microsoft SQL Server 2008 – Hannes
對於Informix,驗證查詢是, 選擇1 from systables
使用validationQuery不會降低性能嗎?此查詢針對應用程序正確的每個連接運行? – yaswanth