有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java检查表中是否已经存在列

我需要验证表中是否已经存在列。我的类扩展了CustomTaskChange,因此我的方法接收一个数据库对象作为参数。我可以通过ResultsTobject进行我想要的验证吗

@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);
}
   

共 (1) 个答案

  1. # 1 楼答案

    您可以从每个表中提取列,然后检查列是否存在


     {
      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*/
     }}