2014-12-07 31 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

相关问题