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

red*_*med 6 java spring spring-jdbc

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

dte*_*iro 7

您可以在DatabaseMetaData 文档中找到所需的信息。

String vendor = jdbcTemplate.getDataSource().getConnection().getMetaData().getDatabaseProductName();
Run Code Online (Sandbox Code Playgroud)

更新!

正如 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();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

  • 这实际上很危险,因为您正在打开一个非托管连接。相反,您应该使用“ConnectionCallback”或再次关闭连接。 (2认同)