如何从Connection对象中确定DBMS

时间:2014-12-07 04:27:00

标签: java mysql jdbc datasource rdbms

我有支持多个RDBMS的用例。用户应该将数据源定义为先决条件,并且在代码级别,我必须确定用户要连接哪个RDBMS并提供特定的RDBMS属性。

例如:

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

如上所示,我们可以检索连接URL或者可以是驱动程序名称并标识RDBMS。但我想澄清一下识别哪个RDBMS用户正在使用的最佳方法。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

这很简单。见DatabaseMetaData

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

更新回答 @dnWick 评论。

是的,这DatabaseMetaData支持广泛的RDBMS。通过DatabaseMetaData接口,我们可以获取有关我们已连接的数据库的元数据。例如,我们可以看到数据库中定义了哪些表,以及每个表有哪些列,甚至我们可以检查我们连接的数据库的支持功能。

示例我们可以看到数据库是否支持多个事务,是否支持UNION等,