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

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

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

@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;  这个就能够了。。ide

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

之后,有相同需求的童鞋们, ,能够使用哦编码

相关文章
相关标签/搜索