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