如何从Spring JdbcTemplate获取数据库供应商名称

时间:2017-05-09 11:08:48

标签: java spring spring-jdbc

我正在使用spring Jdbc,如何从jdbc模板中检索数据库供应商名称而不通过Connection接口。是否有一个由Spring提供的API,它可以提供一个包含DB名称的枚举,以便我可以将我的代码与硬编码字符串值分离

3 个答案:

答案 0 :(得分:1)

您可以在DatabaseMetaData documentation找到所需的信息。

String vendor = jdbcTemplate.getDataSource().getConnection().getMetaData().getDatabaseProductName();

已更新!

根据M. Deinum的建议,您可以使用ConnectionCallback,因此您不需要关闭连接或处理它。

例如:

private String getProduct() {
    return this.jdbcTemplate.execute(new ConnectionCallback<String>() {
        @Override
        public String doInConnection(Connection connection) throws SQLException,
            DataAccessException {

            return connection.getMetaData().getDatabaseProductName();
        }
    });
}

答案 1 :(得分:0)

您可以使用类似的东西来获取基础连接,然后在从数据库元数据中获取所需信息后再将其发布。

DataSource dataSource = jdbcTemplate.getDataSource();
Connection connection = DataSourceUtils.getConnection(dataSource);
String dbProductName = connection.getMetaData().getDatabaseProductName();
DataSourceUtils.releaseConnection(connection, dataSource);

希望这会对你有所帮助。 !

答案 2 :(得分:0)

最简单的方法是使用JdbcUtils#extractDatabaseMetaData方法 - http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/support/JdbcUtils.html#extractDatabaseMetaData-javax.sql.DataSource-java.lang.String-

像:

JdbcUtils.extractDatabaseMetaData(jdbcTemplate.getDataSource(), "getDatabaseProductName");

还有JdbcUtils#commonDatabaseName方法尝试规范化数据库产品名称 - http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/support/JdbcUtils.html#commonDatabaseName-java.lang.String-