我读的是一个文本,内容是两行数据  aaa|bbb|ccccc|ffff|dddgfg 
1|2222|3333333|dfgg|2dgh    执行下面的语句 
while ((str = br.readLine()) != null) { 
  String[] names = str.split("\\|"); 
    String    col1=names[0]; 
    String  col2=names[1]; 
    String  col3=names[2]; 
    String  col4=names[3]; 
    String  col5=names[4]; 
    if (col5==null){col5="";} 
    System.out.println(col5); 
  String sqlinsert = "insert into readfile values ('"+col1+"','"+col2+"','"+col3+"','"+col4+"','"+col5+"')";  
  ps=connection.prepareStatement(sqlinsert); 
ps.execute(sqlinsert); 
} 是没有问题的,但是有个新问题,就是如果文本每行里最后一个字符串是空,比如说  第一行aaa|bbb|ccccc|ffff| 
第二行1|2222|3333333|dfgg|执行就会报数组超界,数据就不能执行插入操作了,如何解决呢???? 

解决方案 »

  1.   

    str=str.replaceAll("\\|\\s*(?=$)|\\s*","");把最后的'|'和多余的空格去掉.
      

  2.   

    你可以捕获这个异常,然后在catch里面照常插入~
      

  3.   

    你可以捕获这个异常,然后在catch里面照常插入~
      

  4.   

    while ((str = br.readLine()) != null) { 
         str=str.replaceAll("\\|\\s*(?=$)|\\s*","");
         String[] names = str.split("\\|"); 
         if(names.length==5){
         String sqlinsert = "insert into readfile values ('"+names[0]+"','"+names[1]+"','"+names[2]+"','"+names[3]+"','"+names[4]+"')";  
         }else{
         //做相应处理;
         }
         }
      

  5.   

    如果有的话 可以这么做:
       在插入之前一定要判断最后是否为NUll主要是因为你的数据跟数据库的数据类型有冲突。
      

  6.   

    up
    根据names.length的大小,做相应的处理。