import java.sql.*; public class CheckMissingColumns { public static void main(String[] args) { try { Class.forName("dm.jdbc.driver.DmDriver"); Connection conn = DriverManager.getConnection("jdbc:dm://192.168.0.145:30236", "WATERSHED", "WaterShed./1224"); Statement stmt = conn.createStatement(); DatabaseMetaData meta = conn.getMetaData(); System.out.println("??WATERSHED_MODEL???..."); ResultSet columns = meta.getColumns(null, null, "WATERSHED_MODEL", null); // ?????? java.util.Set existingColumns = new java.util.HashSet<>(); System.out.println("????"); while (columns.next()) { String columnName = columns.getString("COLUMN_NAME"); existingColumns.add(columnName); System.out.println(" - " + columnName); } // ???? String[] requiredColumns = { "MODEL_ID", "MODEL_NAME", "DESCRIPTION", "CATEGORY", "SUBCATEGORY", "MODEL_TYPE", "MODEL_FORMAT", "FILE_PATH", "FILE_SIZE", "UPLOAD_UNIT", "STATUS", "CREATE_TIME", "UPDATE_TIME" }; System.out.println("\n?????"); for (String col : requiredColumns) { System.out.println(" - " + col + (existingColumns.contains(col) ? " ?" : " ? ??")); } // ?????? System.out.println("\n??????..."); // ?????DESCRIPTION? if (!existingColumns.contains("DESCRIPTION")) { System.out.println("??DESCRIPTION?..."); stmt.executeUpdate("ALTER TABLE WATERSHED_MODEL ADD DESCRIPTION VARCHAR(500)"); } // ?????CATEGORY? if (!existingColumns.contains("CATEGORY")) { System.out.println("??CATEGORY?..."); stmt.executeUpdate("ALTER TABLE WATERSHED_MODEL ADD CATEGORY VARCHAR(50)"); } // ?????SUBCATEGORY? if (!existingColumns.contains("SUBCATEGORY")) { System.out.println("??SUBCATEGORY?..."); stmt.executeUpdate("ALTER TABLE WATERSHED_MODEL ADD SUBCATEGORY VARCHAR(50)"); } // ???? System.out.println("\n???????..."); ResultSet queryRs = stmt.executeQuery("select model_id, model_name, description, category, subcategory, model_type, model_format, file_path, file_size, upload_unit, status, create_time, update_time from WATERSHED_MODEL"); System.out.println("? ?????"); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } }