如何使用 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");
}
我正在尝试编写查询来检查此 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");
}