使用sql语句向数据库插入数据,不受错误数据影响

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

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

@Override
 public String getAppData() {
        logger.info("开始抓取ME金融端【客户】信息");
  List<Map> 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值