我有支持多个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用户正在使用的最佳方法。任何帮助将不胜感激。
答案 0 :(得分:3)
这很简单。见DatabaseMetaData
DatabaseMetaData databaseMetaData = connection.getMetaData();
String databaseName = databaseMetaData.getDatabaseProductName();
String userName = databaseMetaData.getUserName();
更新回答 @dnWick 评论。
是的,这DatabaseMetaData
支持广泛的RDBMS
。通过DatabaseMetaData
接口,我们可以获取有关我们已连接的数据库的元数据。例如,我们可以看到数据库中定义了哪些表,以及每个表有哪些列,甚至我们可以检查我们连接的数据库的支持功能。
示例我们可以看到数据库是否支持多个事务,是否支持UNION等,