源码如下String sql="";
String strusername=ab_send.getUserName();
String fsr=ab_send.getFsr();

    String strphns=ab_send.getPhns();
    String aa[]=strphns.split(",");
    String cc[]=strusername.split(",");
    String nmfsr="";
    for(int i=0; i<aa.length; i++) {
     String bb[] = aa[i].split(",");
     String dd[]=cc[i].split(",");
     for(int n=0; n<bb.length; n++) {
     if (!bb[n].equals("")){
     //statement.setString(1,cc[n]);
     String regtime = com.cms.common.api.EMSDateAPI.getInsertTimestampSQL("WebflowDataSource");
     //sql="insert into ab_send(userName ,phns ,cont ,tim ,flag) values ('"+dd[n]+"','"+bb[n]+"','"+ab_send.getCont()+"',"+regtime+",'"+ab_send.getFlag()+"')";
     sql="insert into ab_send(userName ,phns ,cont ,flag,fsr) values ('"+dd[i]+"','"+bb[i]+"','"+ab_send.getCont()+"','"+ab_send.getFlag()+"','"+fsr+"')";
     try {
      smsqlbean.setSqlValue(sql);
 smsqlbean.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
String errorInfo = "sql|"+"插入****请加入说明信息****失败"+"|"+e.getSQLState()+"|"+e.getMessage();
System.out.println(errorInfo);
}
     System.out.println(sql);
     }
     }
    
    }输入数值如下
发送短信人为:
张三,李四,王二麻子,
号码为:
13800000000,13900000000,133000000,132000000,
思路如下,我发送人是从系统中选取的三个人,手机号码对应的前三位,但是第四个人不是我系统内的人员,我不用录入名字,但是我输入了手机号码,直接发送,
我数据库中发送人名字可以为空,错误出现在发送第四个号码的时候,数组判断第四个名字,也就是红色标注这句,实际上这个时候,这个数组的i是空的,也就是没有值,那么我这个短信就发送不出去了。如何修改,能够完整的发送出去短信?

解决方案 »

  1.   

    sql="insert into ab_send(userName ,phns ,cont ,flag,fsr) values ('"+dd[i]+"','"+bb[i]+"','"+ab_send.getCont()+"','"+ab_send.getFlag()+"','"+fsr+"')";
    没标注出来,就是这句的'"+dd[i]+"'出问题,我想应该是的,如何处理?就是报一个错误,其他都没内容了。错误的数字指的是数组的这个i值。
      

  2.   

    你去看看String split的用法,我记得最后一个逗号没有值的话会返回null怎么的
      

  3.   


    String sql="";
            String strusername=ab_send.getUserName();//这里是用户名
            String fsr=ab_send.getFsr();
            
            String strphns=ab_send.getPhns();//号码
            String aa[]=strphns.split(",");//截成数组
            String cc[]=strusername.split(",");
            String nmfsr="";
            for(int i=0; i<aa.length; i++) {
                String bb[] = aa[i].split(",");//这里怎么又截了,已经分割数组了;难道数组里面
                                                     //有放了逗号分隔的号码
                String dd[]=cc[i].split(",");//这里一样
                for(int n=0; n<bb.length; n++) {
                    if (!bb[n].equals("")){
                    //statement.setString(1,cc[n]);
                    String regtime = com.cms.common.api.EMSDateAPI.getInsertTimestampSQL("WebflowDataSource");
                    //sql="insert into ab_send(userName ,phns ,cont ,tim ,flag) values ('"+dd[n]+"','"+bb[n]+"','"+ab_send.getCont()+"',"+regtime+",'"+ab_send.getFlag()+"')";
                    //这里可以改成
                    sql+="insert into ab_send(userName ,phns ,cont ,flag,fsr) values ('"+dd[i]+"','"+bb[i]+"','"+ab_send.getCont()+"','"+ab_send.getFlag()+"','"+fsr+"');";
                                    System.out.println(sql);
                    }
                }
                
            }
          try {
                     smsqlbean.setSqlValue(sql);//可以一次执行多个插入语句,包要把方法体放入循环
    //可以放方法循环
                     smsqlbean.executeUpdate();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        String errorInfo = "sql|"+"插入****请加入说明信息****失
    败"+"|"+e.getSQLState()+"|"+e.getMessage();
                        System.out.println(errorInfo);
                    }