检查 table 中是否已存在列
Check if a column already exists in the table
我需要验证某个列是否已存在于 table 中。我的 class 扩展了 CustomTaskChange,因此我的方法接收一个数据库对象作为参数。我可以通过 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);
}
}
}
基本上这段代码所做的是遍历我数据库中的所有 table。如果 table 名称以后缀结尾,我将向其添加该列。这样我就可以同时向多个 table 添加一列。
但是我想添加另一个验证以将列添加到 table,那就是 table 中不能已经有同名的列。像这样(伪代码)
if(tableName.endsWith(this.suffis) && columnName doesn't exist in that table){
String sql = sqlStatement.replaceAll("name", tableName);
s.execute(sql);
}
您可以从每个表中获取列,然后您可以检查列是否存在。
{
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM TABLENAME LIMIT 1");
ResultSetMetaData md = rs.getMetaData();
int col = md.getColumnCount();
for (int i = 1; i <= col; i++){
String col_name = md.getColumnName(i);
if(col_name.equals("YourColumnName"){
/*Then the column already exist*/
}}
使用上面的代码,您可以检查元数据,然后执行 SQL 查询以删除元数据。
我需要验证某个列是否已存在于 table 中。我的 class 扩展了 CustomTaskChange,因此我的方法接收一个数据库对象作为参数。我可以通过 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);
}
}
}
基本上这段代码所做的是遍历我数据库中的所有 table。如果 table 名称以后缀结尾,我将向其添加该列。这样我就可以同时向多个 table 添加一列。 但是我想添加另一个验证以将列添加到 table,那就是 table 中不能已经有同名的列。像这样(伪代码)
if(tableName.endsWith(this.suffis) && columnName doesn't exist in that table){
String sql = sqlStatement.replaceAll("name", tableName);
s.execute(sql);
}
您可以从每个表中获取列,然后您可以检查列是否存在。
{
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM TABLENAME LIMIT 1");
ResultSetMetaData md = rs.getMetaData();
int col = md.getColumnCount();
for (int i = 1; i <= col; i++){
String col_name = md.getColumnName(i);
if(col_name.equals("YourColumnName"){
/*Then the column already exist*/
}}
使用上面的代码,您可以检查元数据,然后执行 SQL 查询以删除元数据。