【发布时间】:2021-04-07 14:18:55
【问题描述】:
我需要验证表中是否已存在列。我的类扩展了 CustomTaskChange,所以我的方法接收一个 Database 对象作为参数。我可以通过 ResultSetObject 进行我想要的验证吗?
@Override
public void execute(Database database) throws CustomChangeException {
JdbcConnection connection = (JdbcConnection) database.getConnection();
DatabaseMetaData metadata;
metadata = connection.getMetaData();
String[] types = {"TABLE"};
ResultSet rs = metadata.getTables(null, null, "%", types);
Statement s = connection.createStatement();
while (rs.next()) {
String tableName = rs.getString(3);
if (tableName.endsWith(this.suffix)) {
String sql = sqlStatement.replaceAll("name", tableName);
s.execute(sql);
}
}
}
基本上,这段代码所做的是遍历我数据库中的所有表。如果表名以后缀结尾,我将在其中添加列。这样我可以同时将一列添加到多个表中。 但是我想添加另一个验证以将该列添加到表中,那就是该表中不能存在具有该名称的列。像这样的东西(伪代码)
if(tableName.endsWith(this.suffis) && columnName doesn't exist in that table){
String sql = sqlStatement.replaceAll("name", tableName);
s.execute(sql);
}
【问题讨论】: