小弟,近期在作定時任務時發現, ,從數據庫中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
之後,有相同需求的童鞋們, ,能夠使用哦編碼