使用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

之後,有相同需求的童鞋們, ,能夠使用哦編碼

相關文章
相關標籤/搜索