2011-02-12 62 views
6

是否有一個庫可以爲jdbc驅動程序類確定使用適當的驗證查詢?jdbc驗證查詢

例如 如果JDBC驅動程序com.mysql.jdbc.Driver或com.mysql.jdbc.jdbc2.optional.MysqlXADataSource圖書館就知道了驗證查詢是 「SELECT 1」

C3PO http://www.mchange.com/projects/c3p0/index.html#preferredTestQuery

DBCP http://commons.apache.org/dbcp/configuration.html 「validationQuery」

+0

你是什麼意思 「驗證查詢」?你的意思是檢查連接是否還活着? – skaffman 2011-02-12 14:31:06

+4

大多數連接池要求最終用戶設置驗證查詢以用於測試連接。 sql測試查詢不是可移植的。 #for MySQL/PostgreSQL/MS SQL使用:SELECT 1 #for Oracle use:SELECT 1 from dual #for DB2 use:SELECT 1 FROM sysibm.sysdummy1 最終用戶擔心這些事情的原因是什麼?爲什麼每個程序員都應該做同樣的事情?因此圖書館的建議 – joshjdevl 2011-02-12 19:03:38

+0

c3po有一個很好的概念 - 自動測試表。這個想法可以擴展,因爲場景可能不允許jdbc用戶創建表。所以,相反,當我們使用liquibase時,每個模式都有數據庫更新日誌。我們可以使用來自databasechangelog的SELECT *。 – joshjdevl 2011-02-12 23:44:12

回答

0

我不認爲圖書館是這樣的事情的適當位置。

如果您使用的是連接池,那麼您更有可能會要求它在交出之前檢查連接。您只需輸入適當的SQL並讓池處理它。一個庫會退後一步,因爲它表明你的代碼會調用它。