From eb7f53ad4b76b11695f158c0d02fd24e2e4d72c9 Mon Sep 17 00:00:00 2001 From: Kane Wang Date: Thu, 5 May 2022 17:53:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E8=BF=9B=E5=BA=A6=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wechat/officalAccount/sendMessage.java | 45 ++++++++++++------- .../officalAccount/sendMessageTest.java | 4 +- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/code/java/DisasterWarning/src/main/java/com/cpic/xim/wechat/officalAccount/sendMessage.java b/code/java/DisasterWarning/src/main/java/com/cpic/xim/wechat/officalAccount/sendMessage.java index fb6c251..ad0f4aa 100644 --- a/code/java/DisasterWarning/src/main/java/com/cpic/xim/wechat/officalAccount/sendMessage.java +++ b/code/java/DisasterWarning/src/main/java/com/cpic/xim/wechat/officalAccount/sendMessage.java @@ -2,7 +2,7 @@ * @Author: Kane * @Date: 2022-04-22 10:53:49 * @LastEditors: Kane - * @LastEditTime: 2022-05-05 11:26:35 + * @LastEditTime: 2022-05-05 17:42:33 * @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\wechat\officalAccount\sendMessage.java * @Description: 用来推送公众号消息的程序库。 * @@ -171,12 +171,11 @@ public class sendMessage * 保存的数据用来判断预警是否已经推送过,以防止反复推送数据。 * @param city 城市名称 * @param warning 预警数据,为 QWeatherDisasterWarningItem 对象。 - * @throws SQLException 执行sql时可能抛出的异常。 + * @throws SQLException 执行sql时可能抛出的异常。出现sql异常,就回滚事务。 * @throws IOException 读取数据库配置文件时可能抛出的异常。 * @throws ClassNotFoundException 加载oracle jdbc驱动时可能抛出的异常。 */ - public static void saveWeatherDisasterWarning( String city, - QWeatherDisasterWarningItem warning ) + public static void saveWeatherDisasterWarning( String city, QWeatherDisasterWarning warnings ) throws SQLException, IOException, ClassNotFoundException { Connection conn = null; @@ -199,21 +198,37 @@ public class sendMessage conn = DriverManager.getConnection( jdbcURL, userName, password ); stmt = conn.prepareStatement( sql ); - java.sql.Timestamp pubTime = new java.sql.Timestamp( warning.getPubTime().getTime() ); + for ( QWeatherDisasterWarningItem warning : warnings.getWarning() ) + { + java.sql.Timestamp pubTime = + new java.sql.Timestamp( warning.getPubTime().getTime() ); - stmt.setString( 1, warning.getId() ); - stmt.setString( 2, warning.getSender() ); - stmt.setString( 3, city ); - stmt.setString( 4, warning.getLevel() ); - stmt.setString( 5, warning.getType() ); - stmt.setString( 6, warning.getTypeName() ); - stmt.setString( 7, warning.getTitle() ); - stmt.setString( 8, warning.getText() ); - stmt.setTimestamp( 9, pubTime ); + stmt.setString( 1, warning.getId() ); + stmt.setString( 2, warning.getSender() ); + stmt.setString( 3, city ); + stmt.setString( 4, warning.getLevel() ); + stmt.setString( 5, warning.getType() ); + stmt.setString( 6, warning.getTypeName() ); + stmt.setString( 7, warning.getTitle() ); + stmt.setString( 8, warning.getText() ); + stmt.setTimestamp( 9, pubTime ); - stmt.execute(); + stmt.execute(); + } + + // 没有问题就提交 conn.commit(); } + catch ( SQLException error ) + { + // 出现sql错误,就回滚! + if ( conn != null) + { + conn.rollback(); + } + + throw error; + } finally { try diff --git a/code/java/DisasterWarning/src/test/java/com/cpic/xim/wechat/officalAccount/sendMessageTest.java b/code/java/DisasterWarning/src/test/java/com/cpic/xim/wechat/officalAccount/sendMessageTest.java index a190bde..10c1703 100644 --- a/code/java/DisasterWarning/src/test/java/com/cpic/xim/wechat/officalAccount/sendMessageTest.java +++ b/code/java/DisasterWarning/src/test/java/com/cpic/xim/wechat/officalAccount/sendMessageTest.java @@ -2,7 +2,7 @@ * @Author: Kane * @Date: 2022-04-22 10:53:49 * @LastEditors: Kane - * @LastEditTime: 2022-05-05 11:21:54 + * @LastEditTime: 2022-05-05 17:53:10 * @FilePath: \DisasterWarning\src\test\java\com\cpic\xim\wechat\officalAccount\sendMessageTest.java * @Description: * @@ -77,7 +77,7 @@ public class sendMessageTest String city = "东山县"; - sendMessage.saveWeatherDisasterWarning( city, warning.getWarning().get( 0 ) ); + sendMessage.saveWeatherDisasterWarning( city, warning );