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