我有一个支持多个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,等等。

07-27 19:16