[英]DriverManager.getConnection(); How can I determine whether the username/password is wrong or the Driver is not able to connect to the database?
[英]How can I determine whether a JDBC driver is Type 4?
我們有一個在Java 1.6上運行的應用程序,它能夠通過自定義插件與RDBMS系統通信。 我們不關心客戶的數據庫類型,但出於各種原因,我們確實決定要求使用Type 4驅動程序。
我想以編程方式確定驅動程序是否為Type 4,以便我可以立即拒絕它,而不是花時間調試問題以后才發現驅動程序不是Type 4.因為我不知道供應商是什么,我不能只看版本號。 我看過Driver.jdbcCompliant(),但這不是驅動程序是Type 4的必要條件。我還看了創建一個Connection然后對它進行反射,看看它是否實現了某些方法,如isValid() ,但我再次意識到這並不一定能保證驅動程序是Type 4.有什么建議嗎?
編輯:似乎我正在談論不同的東西!
通過Connection.getMetaData()
獲取DatabaseMetaData
並檢查getJDBCMajorVersion() > = 4.您可能希望在調用該方法時捕獲NoSuchMethodException
,因為只有JDBC 3.0+驅動程序才會擁有它。
編輯:嗯,這似乎應該是正確的但是...... Oracle似乎沒有正確實現它,因為我獲得了11.2的JDBC版本。 這與驅動程序版本相同。 謝謝甲骨文!
如果您不能指望專門為此設計的方法,在我看來,您唯一的選擇是在Connection
上調用createClob()
等方法並捕獲NoSuchMethodException
。 那或為特定供應商添加特殊處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.