如何使用 JdbcTemplate 检查 table 列是否存在?

How to check if a table column exists using JdbcTemplate?

我正在尝试编写查询来检查此 table 中是否存在列。据我所知,我只能查询列的行。我想知道是否有办法查询 table 中的列是否存在?

String currentTable = "";
final Query query = dslContext
        .select(field(COLUMN_COUNTRY_CODE))
        .from(MANAGEMENT_TABLE_NAME)
        .orderBy(field(COLUMN_CREATE_DATE).desc())
        .limit(inline(1));
currentTable = jdbcTemplate.queryForObject(query.getSQL(), String.class);

这就是我的查询目前的样子。我想检查 COLUMN_COUNTRY_CODE 列 table 是否存在于 MANAGEMENT_TABLE_NAME 中。我该怎么做?

使用 JDBC,您可以通过创建 DatabaseMetaData 的实例来实现此目的,如下所示:

DatabaseMetaData databaseMetaData = connection.getMetaData();

您的 Connection 对象是 JdbcConnection 的一个实例。

接下来,通过使用 getColumns() 方法,您可以遍历特定 table 的列并检查它们的名称。

代码示例:

    ResultSet columns = databaseMetaData.getColumns(null,null, "TABLE_NAME", null);
while(columns.next()) {
    String columnName = columns.getString("COLUMN_NAME");    
}

Source