2011-02-10 228 views
3

我們有一個運行在Java 1.6上的應用程序,並且可以通過定製插件與RDBMS系統進行交流。我們不在乎客戶擁有什麼類型的數據庫,但是我們確實因爲各種原因決定需要Type 4驅動程序。如何確定JDBC驅動程序是否爲Type 4?

我想以編程方式決定驅動程序是否爲Type 4,以便我可以立即拒絕它,而不是花時間調試問題以後才發現驅動程序不是Type 4.因爲我不知道供應商是,我不能只看版本號。我看過Driver.jdbcCompliant(),但這不是驅動程序類型4的必要條件。我還着眼於創建一個Connection,然後對其進行反射,以查看它是否實現了某些方法,如isValid() ,但我又意識到這並不一定能保證驅動程序是Type 4.任何建議?

+1

我不認爲有一種方法。 – 2011-02-10 18:32:59

回答

0

編輯:好像我正在談論不同的東西!

通過Connection.getMetaData()獲取DatabaseMetaData並檢查getJDBCMajorVersion()> = 4,您可能需要調用該方法時,因爲只有一個JDBC驅動程序3.0+將它趕NoSuchMethodException

編輯:嗯,這看起來應該是正確的,但... Oracle似乎並沒有正確實現它,因爲我得到了11.2版本的JDBC版本。這是我得到的驅動程序版本。感謝Oracle!

如果你不能指望爲此專門設計的方法,在我看來,你唯一的選擇是調用Connection上的createClob()等方法,並捕獲NoSuchMethodException。這或爲特定供應商添加特殊處理。

+0

主要/次要版本代表受支持的jdbc版本,而不是驅動程序類型。例如,在jdbc 3中有一個類型4驅動程序,並在jdbc 3中調用getJDBCMajorVersion()不返回4 – 2011-02-10 18:32:26