import java.sql.*; import java.io.*; import java.nio.file.*; import java.util.Scanner; public class ExecuteMenuScriptFixed { public static void main(String[] args) { String url = "jdbc:dm://192.168.0.145:30236"; String username = "WATERSHED"; String password = "WaterShed./1224"; try { // 加载DM JDBC驱动 Class.forName("dm.jdbc.driver.DmDriver"); // 建立数据库连接 Connection conn = DriverManager.getConnection(url, username, password); System.out.println("数据库连接成功!"); // 执行菜单脚本文件 executeScript(conn, "watershed_menu_fixed.sql"); // 关闭连接 conn.close(); System.out.println("菜单配置脚本执行完成!"); } catch (Exception e) { e.printStackTrace(); } } private static void executeScript(Connection conn, String scriptFile) { try { System.out.println("正在执行脚本: " + scriptFile); // 读取SQL脚本文件 String content = new String(Files.readAllBytes(Paths.get(scriptFile))); // 使用分号分割SQL语句 Scanner scanner = new Scanner(content); scanner.useDelimiter(";"); Statement stmt = conn.createStatement(); while (scanner.hasNext()) { String sql = scanner.next().trim(); if (!sql.isEmpty() && !sql.startsWith("--") && !sql.startsWith("/*")) { try { stmt.execute(sql); System.out.println("执行成功: " + sql.substring(0, Math.min(50, sql.length())) + "..."); } catch (SQLException e) { System.err.println("执行SQL失败: " + sql); System.err.println("错误信息: " + e.getMessage()); } } } stmt.close(); scanner.close(); System.out.println("脚本 " + scriptFile + " 执行完成!"); } catch (Exception e) { System.err.println("执行脚本 " + scriptFile + " 时出错:"); e.printStackTrace(); } } }