From 0ac4ebea411ca9852fd5b382cf6b9fd65a302d95 Mon Sep 17 00:00:00 2001 From: 王佳豪 <g675230687@126.com> Date: 星期三, 16 六月 2021 13:45:22 +0800 Subject: [PATCH] 解决erp连接不关闭查询异常问题 --- src/main/java/com/zy/common/service/erp/ErpSqlServer.java | 42 +++++++++++++++++++++++++++++++++--------- 1 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/zy/common/service/erp/ErpSqlServer.java b/src/main/java/com/zy/common/service/erp/ErpSqlServer.java index 24b89da..2ebe41f 100644 --- a/src/main/java/com/zy/common/service/erp/ErpSqlServer.java +++ b/src/main/java/com/zy/common/service/erp/ErpSqlServer.java @@ -5,6 +5,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.sql.*; import java.util.ArrayList; import java.util.HashMap; @@ -61,12 +65,14 @@ /********************************* 鏍稿績灞� *********************************/ /*****************************************************************************/ - private List<Map<String, Object>> executeQuery(String sql) { + + private synchronized List<Map<String, Object>> executeQuery(String sql) { try { Connection conn = getConn(); pstm = conn.prepareStatement(sql); rs = pstm.executeQuery(); - return convertList(rs); + List<Map<String, Object>> maps = convertList(rs); + return deepClone(maps); } catch (Exception e) { e.printStackTrace(); return null; @@ -130,13 +136,31 @@ e.printStackTrace(); } } -// if (conn != null) { -// try { -// conn.close(); -// } catch (SQLException e) { -// e.printStackTrace(); -// } -// } + if (conn != null) { + try { + conn.close(); + conn = null; + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + /** + * 娣辨嫹璐� + */ + public ArrayList deepClone(List list) throws Exception { + // 搴忓垪鍖� + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(bos); + + oos.writeObject(list); + + // 鍙嶅簭鍒楀寲 + ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); + ObjectInputStream ois = new ObjectInputStream(bis); + + return (ArrayList) ois.readObject(); } } -- Gitblit v1.9.1