2014-12-07 51 views
3

我有一個支持多個RDBMS的用例。用戶應該將數據源定義爲先決條件,並且在代碼級我必須確定用戶要連接哪個RDBMS並提供特定的RDBMS屬性。如何從Connection對象中確定DBMS

如:,

com.mysql.jdbc.Driver   jdbc:mysql://hostname/ databaseName 
oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostname:port Number:databaseName 

如上圖所示,我們可以檢索連接的URL或者可能是驅動程序的名稱和標識的RDBMS。但我想澄清什麼是識別哪個RDBMS用戶正在使用的最佳方式。任何幫助將不勝感激。

+0

我發現按照這也可以識別。 DatabaseMetaData databaseMetaData = con.getMetaData(); String dbName = databaseMetaData.getDatabaseProductName(); – dnWick 2014-12-07 05:44:30

回答

3

這很簡單。見DatabaseMetaData

DatabaseMetaData databaseMetaData = connection.getMetaData(); 
String databaseName = databaseMetaData.getDatabaseProductName(); 
String userName = databaseMetaData.getUserName(); 

UPDATE要回答@dnWick評論。

是的,這個DatabaseMetaData支持廣泛的RDBMS。通過DatabaseMetaData接口,我們可以獲取有關我們連接的數據庫的元數據。例如,我們可以看到數據庫中定義了哪些表以及每個表有哪些列,即使我們可以檢查我們連接的數據庫的支持功能。

我們可以看到,如果一個數據庫有多個事務的支持,支持工會與否,等等,

+0

謝謝我把同樣的解決方案作爲評論。我想知道它是否適用於任何RDBMS。我猜是的。如果您對此有任何想法,請分享.. – dnWick 2014-12-07 06:47:02

相關問題