博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用sql语句向数据库插入数据,不受错误数据影响
阅读量:6589 次
发布时间:2019-06-24

本文共 2453 字,大约阅读时间需要 8 分钟。

hot3.png

小弟,近期在做定时任务时发现, ,从数据库中select出来了10条数据,其中有一条是有错误信息的。

保存到了list中,,向另一个库插入的时候,这条错误数据可能在10条中的第5的位置,到值6-10的数据无法插入,源码如下

@Override public String getAppData() {        logger.info("开始抓取ME金融端【客户】信息");  List list = this.findCusData();    if(list.size() > 0){   for(int i = 0; i < list.size(); i++){    logger.info("抓取到的App端客户信息的id为:" + list.get(i).get("ID").toString());    try {     //因为App端和综合端数据字典不能对应,所以需要在中间代码中进行转换     String sex = "1";     String idTypeCd = "1";     if("2".equals(list.get(i).get("SEX"))){//App端为2       sex = "0";//综合端女为0     }     if("1".equals(list.get(i).get("IDTYPECD"))){//App端身份证为1      idTypeCd = "0";//综合端身份证为0     }          //插入客户表的sql语句     String sql = "insert into me_mid_customer_info "       + "(id,"       + "ch_name,"       + "sex_cd,"       + "id_type_cd,"       + "id_number,"       + "phone_number,"       + "data_handle_date,"       + "handle_terrace,"       + "flag,"       + "self_code,"       + "other_code,"       + "me_cus_id ) VALUES "       + "(seq_me_mid_customer_info.NEXTVAL,'" + getNull(list.get(i).get("NAME"))       + "','" + sex       + "','" + idTypeCd       + "','" + getNull(list.get(i).get("IDNUMBER"))       + "','" + getNull(list.get(i).get("PHONENUMBER"))       + "','" + sd.format(System.currentTimeMillis())       + "','" + "0"       + "','" + "0"       + "','" + getNull(list.get(i).get("CUSREFERRALCODE"))       + "','" + getNull(list.get(i).get("INVREFERRALCODE"))//这里要根据后续推荐码编码规则进行修改       + "','" + getNull(list.get(i).get("ID"))       + "')";         //修改App端抓取数据后的数据状态,避免重复抓取     String sqlUpdateCus = "update me_customer_info set flag='1' where flag = '0'"       + "and id='"+getNull(list.get(i).get("ID"))+"'";          logger.info("插入【客户】到中间库的sql:"+sql);     logger.info("修改ME金融端【客户】数据状态的sql:"+sqlUpdateCus);     //获取插入客户的结果集     jdbcDao1.execute(sql);     logger.info("【SUCC】执行【客户】数据插入中间表成功!");     //执行修改语句     jdbcDao.execute(sqlUpdateCus);     logger.info("【SUCC】修改Me金融端【客户】数据成功");         } catch (Exception e) {     logger.info("【ERROR】执行数据插入中间表报错!");     e.printStackTrace();    }   }   logger.info("获取数据数量为:"+list.size()+"条");   return "success";  }else{   logger.info("获取数据数量为:0条");   return "empty";  } }

上述代码中,使用了for循环对list进行遍历,并向另一个库插入,如果第5条数据有误, 那么就会抛出异常, ,6-10条数据就无法插入,,,,那么 如何能不受错误数据影响,,插入9条数据,1条错误数据不插入呢?

问过大牛们才知道,,其实,在catch(){           }中 加continue;  这个就可以了。。

我真是如遭雷劈,continue原本功能就是终止当前循环, ,执行下次循环。我竟然没有想起来。。。。

以后,有相同需求的童鞋们, ,可以使用哦

转载于:https://my.oschina.net/u/2543341/blog/551457

你可能感兴趣的文章
mysql 5.7.16安装与给远程连接权限
查看>>
GitHub上最流行的10000个Java都使用了哪些库?
查看>>
也来谈一谈js的浅复制和深复制
查看>>
设计模式--Builder模式
查看>>
spring data for mongo
查看>>
开启 URL 重写
查看>>
Journey源码分析二:整体启动流程
查看>>
Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
查看>>
七、MySQL中的字符集 - 系统的撸一遍MySQL
查看>>
centos7的php5.4竟然不支持原生的mysql
查看>>
使用IntelliJ IDEA开发SpringMVC网站(四)用户管理
查看>>
Maven依赖Scope标签用法
查看>>
堆排序的原理
查看>>
ajax加载数据到页面无法打印的解决办法
查看>>
js 验证中文
查看>>
MySQL给查询结果添加一表表示行号或名次(1)
查看>>
Linux下运行java DES AES加解密
查看>>
DataNode 运行状况
查看>>
jsp中为什么有时out.write不能写,为什么?
查看>>
在Mac中如何通过命令对NTFS磁盘格式化
查看>>