From 1bda9524add969e315d870f284046ecf1097f956 Mon Sep 17 00:00:00 2001
From: 826220679@qq.com <826220679@qq.com>
Date: 星期日, 24 八月 2025 18:01:25 +0800
Subject: [PATCH] 修改

---
 src/databases/DBConnector.java |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 57 insertions(+), 0 deletions(-)

diff --git a/src/databases/DBConnector.java b/src/databases/DBConnector.java
index 1d89561..edf9e0e 100644
--- a/src/databases/DBConnector.java
+++ b/src/databases/DBConnector.java
@@ -95,6 +95,8 @@
                     case "FIELD_VALIDATION_FAIL": return "字段验证失败";
                     case "DEVICE_ID_EXISTS": return "设备编号已存在";
                     case "INVALID_NUMBER_FORMAT": return "无效的数字格式"; 
+                    case "DB_DDL_ERROR": return "执行DDL语句失败";
+                    case "DB_BATCH_INSERT_ERROR": return "批量插入失败";
                     // 添加缺失的键
                     case "DB_QUERY_ERROR": return "数据库查询失败";
                     default: 
@@ -117,6 +119,8 @@
                             "FIELD_VALIDATION_FAIL",
                             "DEVICE_ID_EXISTS",
                             "INVALID_NUMBER_FORMAT",
+                            "DB_DDL_ERROR",
+                            "DB_BATCH_INSERT_ERROR",
                             "DB_QUERY_ERROR"  // 添加缺失的键
                     )
                 );
@@ -497,4 +501,57 @@
         return pstmt.executeQuery();
     }
     
+ // 在DBConnector类中添加以下方法
+
+    /**
+     * 检查表是否存在
+     */
+    public static boolean tableExists(String tableName) {
+        try (Connection conn = connectToDatabase()) {
+            if (conn == null) return false;
+            try (ResultSet rs = conn.getMetaData().getTables(null, null, tableName, null)) {
+                return rs.next();
+            }
+        } catch (SQLException e) {
+            logError("DB_QUERY_ERROR", "检查表是否存在失败: " + e.getMessage());
+            return false;
+        }
+    }
+    
+    /**
+     * 执行DDL语句(创建表等)
+     */
+    public static boolean executeDDL(String ddlSQL) {
+        try (Connection conn = connectToDatabase();
+             Statement stmt = conn.createStatement()) {
+            stmt.execute(ddlSQL);
+            return true;
+        } catch (SQLException e) {
+            logError("DB_DDL_ERROR", "执行DDL语句失败: " + e.getMessage() + "\nDDL: " + ddlSQL);
+            return false;
+        }
+    }
+    
+    /**
+     * 执行批量更新操作
+     */
+    public static int executeBatchUpdate(String sql, List<Object[]> paramsList) {
+        try (Connection conn = connectToDatabase();
+             PreparedStatement pstmt = conn.prepareStatement(sql)) {
+            
+            for (Object[] params : paramsList) {
+                for (int i = 0; i < params.length; i++) {
+                    pstmt.setObject(i + 1, params[i]);
+                }
+                pstmt.addBatch();
+            }
+            
+            int[] results = pstmt.executeBatch();
+            return results.length;
+        } catch (SQLException e) {
+            logError("DB_BATCH_INSERT_ERROR", "批量插入失败: " + e.getMessage() + "\nSQL: " + sql);
+            return 0;
+        }
+    }
+    
 }
\ No newline at end of file

--
Gitblit v1.9.3