ExecuteMinimalMenuScript.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import java.io.*;
  2. import java.sql.*;
  3. import java.nio.file.*;
  4. import java.util.Scanner;
  5. public class ExecuteMinimalMenuScript {
  6. public static void main(String[] args) {
  7. String url = "jdbc:dm://192.168.0.145:30236";
  8. String username = "WATERSHED";
  9. String password = "WaterShed./1224";
  10. String scriptFile = "watershed_menu_minimal.sql";
  11. try {
  12. // 加载DM JDBC驱动
  13. Class.forName("dm.jdbc.driver.DmDriver");
  14. // 建立数据库连接
  15. Connection conn = DriverManager.getConnection(url, username, password);
  16. System.out.println("数据库连接成功!");
  17. // 执行SQL脚本
  18. executeScript(conn, scriptFile);
  19. // 关闭连接
  20. conn.close();
  21. System.out.println("菜单配置脚本执行完成!");
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. private static void executeScript(Connection conn, String scriptFile) {
  27. try {
  28. System.out.println("正在执行脚本: " + scriptFile);
  29. // 读取SQL脚本文件
  30. String content = new String(Files.readAllBytes(Paths.get(scriptFile)));
  31. // 使用分号分割SQL语句
  32. Scanner scanner = new Scanner(content);
  33. scanner.useDelimiter(";");
  34. Statement stmt = conn.createStatement();
  35. while (scanner.hasNext()) {
  36. String sql = scanner.next().trim();
  37. if (!sql.isEmpty() && !sql.startsWith("--") && !sql.startsWith("/*")) {
  38. try {
  39. stmt.execute(sql);
  40. System.out.println("执行成功: " + sql.substring(0, Math.min(50, sql.length())) + "...");
  41. } catch (SQLException e) {
  42. System.err.println("执行SQL失败: " + sql);
  43. System.err.println("错误信息: " + e.getMessage());
  44. }
  45. }
  46. }
  47. stmt.close();
  48. scanner.close();
  49. System.out.println("脚本 " + scriptFile + " 执行完成!");
  50. } catch (Exception e) {
  51. System.err.println("执行脚本 " + scriptFile + " 时出错:");
  52. e.printStackTrace();
  53. }
  54. }
  55. }