FixChineseEncoding.java 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.Statement;
  4. import java.sql.SQLException;
  5. import java.nio.charset.StandardCharsets;
  6. public class FixChineseEncoding {
  7. public static void main(String[] args) {
  8. // Database connection information with charset parameter
  9. String url = "jdbc:dm://192.168.0.145:30236?charset=utf8&client_encoding=utf8"; // Explicit charset settings
  10. String username = "WATERSHED";
  11. String password = "WaterShed./1224";
  12. Connection conn = null;
  13. Statement stmt = null;
  14. try {
  15. // Load driver
  16. Class.forName("dm.jdbc.driver.DmDriver");
  17. // Establish connection
  18. System.out.println("Connecting to database...");
  19. conn = DriverManager.getConnection(url, username, password);
  20. stmt = conn.createStatement();
  21. // Ensure connection uses UTF-8
  22. stmt.executeUpdate("SET CLIENT_ENCODING TO 'UTF8'");
  23. // Drop existing table if it exists
  24. System.out.println("Dropping existing table...");
  25. stmt.executeUpdate("DROP TABLE IF EXISTS \"PROJECT\"");
  26. // Create new table with explicit charset support
  27. System.out.println("Creating new table with UTF-8 support...");
  28. String createTableSql = "CREATE TABLE \"PROJECT\" (
  29. \"project_id\" BIGINT NOT NULL IDENTITY(1,1),
  30. \"project_name\" VARCHAR(100) NOT NULL,
  31. \"project_category\" VARCHAR(50) NOT NULL,
  32. \"project_subcategory\" VARCHAR(50) NOT NULL,
  33. \"project_description\" VARCHAR(500) DEFAULT NULL,
  34. \"project_url\" VARCHAR(255) DEFAULT NULL,
  35. \"status\" CHAR(1) NOT NULL DEFAULT '0',
  36. \"create_by\" VARCHAR(64) DEFAULT '',
  37. \"create_time\" DATETIME,
  38. \"update_by\" VARCHAR(64) DEFAULT '',
  39. \"update_time\" DATETIME,
  40. \"remark\" VARCHAR(500) DEFAULT NULL,
  41. PRIMARY KEY (\"project_id\")
  42. )";
  43. stmt.executeUpdate(createTableSql);
  44. // Add constraints
  45. System.out.println("Adding constraints...");
  46. stmt.executeUpdate("ALTER TABLE \"PROJECT\" ADD CONSTRAINT \"project_check_1\" CHECK (\"status\" IN ('0','1','2'))");
  47. // Add Chinese comments directly in code to avoid file encoding issues
  48. System.out.println("Adding Chinese comments...");
  49. stmt.executeUpdate("COMMENT ON TABLE \"PROJECT\" IS '项目表'");
  50. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"project_id\" IS '项目ID'");
  51. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"project_name\" IS '项目名称'");
  52. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"project_category\" IS '项目分类(数字孪生、水利信息化等)'");
  53. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"project_subcategory\" IS '项目子类(数字孪生太浦河、数字孪生水文站等)'");
  54. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"project_description\" IS '项目描述'");
  55. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"project_url\" IS '项目访问URL'");
  56. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"status\" IS '项目状态(0正常 1维护中 2已删除)'");
  57. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"create_by\" IS '创建者'");
  58. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"create_time\" IS '创建时间'");
  59. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"update_by\" IS '更新者'");
  60. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"update_time\" IS '更新时间'");
  61. stmt.executeUpdate("COMMENT ON COLUMN \"PROJECT\".\"remark\" IS '备注'");
  62. // Insert data with Chinese characters directly in code
  63. System.out.println("Inserting data with Chinese characters...");
  64. // Insert statement for each project
  65. String[] insertStatements = {
  66. "INSERT INTO \"PROJECT\" (\"project_name\", \"project_category\", \"project_subcategory\", \"project_description\", \"status\", \"create_by\", \"create_time\", \"update_by\", \"update_time\") VALUES
  67. ('数字孪生太浦河', '数字孪生', '数字孪生太浦河', '基于数字孪生技术的太浦河流域综合管理平台,实现河流监测、模拟预测与智能调度', '0', 'admin', '2024-06-15 00:00:00', 'admin', '2024-06-15 00:00:00')",
  68. "INSERT INTO \"PROJECT\" (\"project_name\", \"project_category\", \"project_subcategory\", \"project_description\", \"status\", \"create_by\", \"create_time\", \"update_by\", \"update_time\") VALUES
  69. ('数字孪生太浦闸', '数字孪生', '数字孪生太浦河', '基于数字孪生技术的太浦闸智能监控系统,实现闸门运行状态实时监测与调度控制', '0', 'admin', '2024-06-20 00:00:00', 'admin', '2024-06-20 00:00:00')",
  70. "INSERT INTO \"PROJECT\" (\"project_name\", \"project_category\", \"project_subcategory\", \"project_description\", \"status\", \"create_by\", \"create_time\", \"update_by\", \"update_time\") VALUES
  71. ('贡湖实验站', '数字孪生', '数字孪生水文站', '实现水文监测站点的数字化映射,提供实时数据可视化与智能分析功能', '0', 'admin', '2024-03-10 00:00:00', 'admin', '2024-03-10 00:00:00')",
  72. "INSERT INTO \"PROJECT\" (\"project_name\", \"project_category\", \"project_subcategory\", \"project_description\", \"status\", \"create_by\", \"create_time\", \"update_by\", \"update_time\") VALUES
  73. ('太师桥水文站', '数字孪生', '数字孪生水文站', '全流域水文数据采集与传输系统,支持多源数据融合与标准化管理', '0', 'admin', '2024-03-15 00:00:00', 'admin', '2024-03-15 00:00:00')",
  74. "INSERT INTO \"PROJECT\" (\"project_name\", \"project_category\", \"project_subcategory\", \"project_description\", \"status\", \"create_by\", \"create_time\", \"update_by\", \"update_time\") VALUES
  75. ('铜山源灌区', '数字孪生', '数字孪生灌区', '基于数字孪生技术的灌区水资源优化配置系统,实现精准灌溉与水资源高效利用', '0', 'admin', '2024-04-20 00:00:00', 'admin', '2024-04-20 00:00:00')",
  76. "INSERT INTO \"PROJECT\" (\"project_name\", \"project_category\", \"project_subcategory\", \"project_description\", \"status\", \"create_by\", \"create_time\", \"update_by\", \"update_time\") VALUES
  77. ('水资源评价调配', '水利信息化', '水资源评价调配', '水资源评价调配模型是宁波 \"库群互联、三网协同\" 智慧水网体系的核心技术支撑', '0', 'admin', '2024-05-10 00:00:00', 'admin', '2024-05-10 00:00:00')",
  78. "INSERT INTO \"PROJECT\" (\"project_name\", \"project_category\", \"project_subcategory\", \"project_description\", \"status\", \"create_by\", \"create_time\", \"update_by\", \"update_time\") VALUES
  79. ('流域数据采集平台', '水利信息化', '流域数据采集平台', '多参数水质在线监测系统,实现水质指标实时采集、分析与可视化,支持水质预警和决策辅助', '0', 'admin', '2024-05-15 00:00:00', 'admin', '2024-05-15 00:00:00')",
  80. "INSERT INTO \"PROJECT\" (\"project_name\", \"project_category\", \"project_subcategory\", \"project_description\", \"status\", \"create_by\", \"create_time\", \"update_by\", \"update_time\") VALUES
  81. ('千岛湖水资源评价', '水利信息化', '千岛湖水资源评价', '基于多源数据的千岛湖水资源综合评价系统,实现水资源量、质、效的全面监测与分析', '0', 'admin', '2024-06-01 00:00:00', 'admin', '2024-06-01 00:00:00')"
  82. };
  83. // Execute all insert statements
  84. for (String insertSql : insertStatements) {
  85. stmt.executeUpdate(insertSql);
  86. }
  87. System.out.println("\n✅ SUCCESS: Table created with proper Chinese encoding!");
  88. System.out.println("All Chinese descriptions should now display correctly.");
  89. } catch (ClassNotFoundException e) {
  90. e.printStackTrace();
  91. } catch (SQLException e) {
  92. System.err.println("Error: " + e.getMessage());
  93. e.printStackTrace();
  94. } finally {
  95. // Close connection
  96. try {
  97. if (stmt != null) stmt.close();
  98. if (conn != null) conn.close();
  99. } catch (SQLException e) {
  100. e.printStackTrace();
  101. }
  102. }
  103. }
  104. }