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/config/InitConfig.java     |    6 ++
 src/main/java/com/lf/server/helper/AccessHelper.java   |  102 +++++++++++++++++++++++++++++++++
 src/main/java/com/lf/server/entity/all/StaticData.java |    5 +
 说明.txt                                                 |   12 +---
 4 files changed, 114 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/lf/server/config/InitConfig.java b/src/main/java/com/lf/server/config/InitConfig.java
index a0ae233..5041d70 100644
--- a/src/main/java/com/lf/server/config/InitConfig.java
+++ b/src/main/java/com/lf/server/config/InitConfig.java
@@ -76,6 +76,7 @@
             //FloatServerController.test();
             //testReadExcel();
             //testBatchUpdate();
+            //testAccess();
 
             //boolean f1 = ZipHelper.unzip("D:\\LF\\data\\resources.zip", "D:\\LF\\data\\unzip");
             //boolean f2 = ZipHelper.zip("D:\\LF\\data\\res.zip", "D:\\LF\\data\\unzip\\resources");
@@ -221,4 +222,9 @@
         List<?> list = ExcelHelper.readExcel(obj.getClass(), xls);
         int r3 = list.size();
     }
+
+    private void testAccess() {
+        List<Map<String, Object>> list = AccessHelper.readMdb("D:\\LF\\data\\test.mdb", "", "");
+        int count = null == list || list.isEmpty() ? 0 : list.size();
+    }
 }
diff --git a/src/main/java/com/lf/server/entity/all/StaticData.java b/src/main/java/com/lf/server/entity/all/StaticData.java
index 2ac1e1c..73a24b0 100644
--- a/src/main/java/com/lf/server/entity/all/StaticData.java
+++ b/src/main/java/com/lf/server/entity/all/StaticData.java
@@ -83,4 +83,9 @@
      * 璇诲彇鎺掗櫎瀛楁
      */
     public final static List<String> READ_EXCLUDE_FIELDS = new ArrayList<>(Arrays.asList("gid", "objectid", "dirid", "depid", "verid", "createtime", "createuser", "updateuser", "updatetime", "shape_leng", "shape_area", "dirName", "depName", "verName", "createName", "updateName"));
+
+    /**
+     * MDB鎺掗櫎瀛楁
+     */
+    public final static List<String> MDB_EXCLUDE_FIELDS = new ArrayList<>(Arrays.asList("Shape", "SHAPE_LENG", "Shape_Length", "Shape_Area", "OBJECTID_1"));
 }
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
diff --git "a/\350\257\264\346\230\216.txt" "b/\350\257\264\346\230\216.txt"
index 9499266..ecc45a9 100644
--- "a/\350\257\264\346\230\216.txt"
+++ "b/\350\257\264\346\230\216.txt"
@@ -50,9 +50,9 @@
 49.瑙e喅鍑哄浘椤甸潰婧㈠嚭銆佸浘鏍囦涪澶便�佸簳鍥惧垏鎹㈢瓑闂
 50.寮�鍙�.net鏈嶅姟璋冪敤Python绋嬪簭锛屽疄鐜版帴鍙e嚭鍥惧姛鑳�
 51.鍦ㄥ紑鍙戠幆澧冮儴缃睶GIS+Python鍑哄浘鍔熻兘 <
-52.
-53.
-54.
+52.寮�鍙戜笂浼爏hp鏂囦欢杞崲涓篔SON鏁版嵁鎺ュ彛
+53.寮�鍙戣鍙朎xcel琛ㄦ牸鍔熻兘
+54.寮�鍙戞牴鎹疄浣撳悕绉板姩鎬佽鍙朎xcel鍔熻兘
 55.
 56.
 57.
@@ -63,15 +63,9 @@
 Access:
 https://blog.csdn.net/weixin_43407520/article/details/122165848
 -----------------------------------------------
-.寮�鍙戜笂浼爏hp鏂囦欢杞崲涓篔SON鏁版嵁鎺ュ彛
-.寮�鍙戣鍙朎xcel琛ㄦ牸鍔熻兘
-.寮�鍙戞牴鎹疄浣撳悕绉板姩鎬佽鍙朎xcel鍔熻兘
-
 <property key="layers" value="USA Population,楂樺痉褰卞儚娉ㄨ,楂樺痉褰卞儚"/>
   <property key="imgPath" value="E:/terrait/TianJin/ExportMap/ExportMap/Sources/geo.png"/>
 
-閾炬帴锛歨ttps://pan.baidu.com/s/1H2G34m8vIZkfeoKghEtegg?pwd=vlie 鎻愬彇鐮侊細vlie
-閾炬帴锛歨ttps://pan.baidu.com/s/10mW7dCJiBwgx5eBQy137EA 鎻愬彇鐮侊細3mwj
 GDAL锛歨ttps://www.cnblogs.com/unlockth/p/14062076.html
 E:\terrait\TianJin\Zip\release-1928-x64-dev\release-1928-x64\bin
 ----------------------------------------------------------------------------------------------------

--
Gitblit v1.9.3