【问题标题】:How to check if a table column exists using JdbcTemplate?如何使用 JdbcTemplate 检查表列是否存在?
【发布时间】:2021-09-21 00:46:44
【问题描述】:

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

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 列表是否存在于MANAGEMENT_TABLE_NAME 中。我该怎么做呢?

【问题讨论】:

  • 您需要查询数据库元数据,而不是表本身。
  • 备案,还有DSLContext.meta()查询JDBC的DatabaseMetaData

标签: spring jdbc jooq


【解决方案1】:

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

DatabaseMetaData databaseMetaData = connection.getMetaData();

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

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

代码示例:

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

Source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2021-06-02
    • 2019-10-04
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多