我读的是一个文本,内容是两行数据 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|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|执行就会报数组超界,数据就不能执行插入操作了,如何解决呢????
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{
//做相应处理;
}
}
在插入之前一定要判断最后是否为NUll主要是因为你的数据跟数据库的数据类型有冲突。
根据names.length的大小,做相应的处理。