From a1a31e84ea3aa977d50b4ef868083f5e9377cbf0 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期四, 15 十二月 2022 15:59:39 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/helper/AccessHelper.java |  102 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 100 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/lf/server/helper/AccessHelper.java b/src/main/java/com/lf/server/helper/AccessHelper.java
index 19d3b3f..afc2ebc 100644
--- a/src/main/java/com/lf/server/helper/AccessHelper.java
+++ b/src/main/java/com/lf/server/helper/AccessHelper.java
@@ -1,9 +1,107 @@
 package com.lf.server.helper;
 
+import com.lf.server.entity.all.StaticData;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.sql.*;
+import java.util.*;
+
 /**
  * Access甯姪绫�
  * @author WWW
  */
 public class AccessHelper {
-    //
-}
+    private final static Log log = LogFactory.getLog(AccessHelper.class);
+
+    /**
+     * 璇诲彇.mdb鏂囦欢
+     *
+     * @param mdbPath  mdb鏂囦欢鍦板潃
+     * @param username 鐢ㄦ埛鍚�
+     * @param password 瀵嗙爜
+     */
+    public static List<Map<String, Object>> readMdb(String mdbPath, String username, String password) {
+        List<Map<String, Object>> list = new ArrayList<>();
+
+        Connection conn = null;
+        PreparedStatement ps = null;
+        ResultSet tables = null;
+        ResultSet rs = null;
+
+        try {
+            Properties prop = new Properties();
+            prop.put("charSet", "UTF-8");
+            prop.put("user", username);
+            prop.put("password", password);
+
+            String dbUrl = "jdbc:ucanaccess://" + mdbPath;
+            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver").newInstance();
+
+            conn = DriverManager.getConnection(dbUrl, prop);
+            tables = conn.getMetaData().getTables(mdbPath, null, null, new String[]{"TABLE"});
+            while (tables.next()) {
+                Map<String, Object> tableMap = new HashMap<>(4);
+                Set<String> columnList = new HashSet<>();
+                List<Map<String, String>> dataList = new ArrayList<>();
+
+                String tableName = tables.getString(3);
+                ps = conn.prepareStatement("select * from " + tableName);
+                rs = ps.executeQuery();
+
+                ResultSetMetaData data = rs.getMetaData();
+                while (rs.next()) {
+                    Map<String, String> map = new HashMap<>();
+                    for (int i = 1; i <= data.getColumnCount(); i++) {
+                        String columnName = data.getColumnName(i);
+                        if (StaticData.MDB_EXCLUDE_FIELDS.contains(columnName)) {
+                            continue;
+                        }
+
+                        map.put(columnName, rs.getString(i));
+                        columnList.add(columnName);
+                    }
+                    dataList.add(map);
+                }
+
+                tableMap.put("name", tableName);
+                tableMap.put("column", columnList);
+                tableMap.put("data", dataList);
+                list.add(tableMap);
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        } finally {
+            closeA1l(conn, ps, tables, rs);
+        }
+
+        return list;
+    }
+
+    /**
+     * 鍏抽棴鎵�鏈夌殑璧勬簮閾炬帴
+     *
+     * @param conn   杩炴帴
+     * @param ps     鎵ц璇彞
+     * @param tables 缁撴灉闆�
+     * @param rs     缁撴灉闆�
+     */
+    private static void closeA1l(Connection conn, PreparedStatement ps, ResultSet tables, ResultSet rs) {
+        try {
+            if (null != rs) {
+                rs.close();
+            }
+            if (null != tables) {
+                tables.close();
+            }
+            if (null != ps) {
+                ps.close();
+            }
+            if (null != conn) {
+                conn.close();
+            }
+        } catch (Exception ex) {
+            //
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3