专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Java Exception

java.lang.StringIndexOutOfBoundsException: String index out of range: -6

发布时间:2010-06-05 12:36:37 文章来源:www.iduyao.cn 采编人员:星星草

在解析数据库中一个字段的数据的时候总是报数组越界(ava.lang.StringIndexOutOfBoundsException: String index out of range: -6)这个错误,具体情况:
数据库中有4W多条数据,我要比较a字段和b字段中是否有相同部分,用到了字符串的substring()方法
我测试过多次,但每次报错的数据都不一样,都报数组越界的错。

IR_SID  IR_SRCNAME 
----------- -------------------------
5963  JB 3540-1983 ;


IR_SID  IR_SRCNAME     
----------- -------------------------
7216  JB/T 8648.2-1997 ;

IR_SRCNAME的数据是我要用substring()方法处理的数据,运行一次会报处理JB 3540-1983出现数组越界的错,再重新运行一次会报处理JB/T 8648.2-1997出现数组越界的错,运行多少次就会出现多少次不同的数据报错,并且都是数组越界,我的问题是如果真的是某个数据或者某些数据在用substring()处理的时候有错的话应该是一直报错,为什么运行一次就报不同的数据有错呢?

下面是具体代码:
 

Java code


conn = DBConnectionManager.getInstance().getConnection();

String sql = "select IR_SID,IR_URLTITLE,IR_SRCNAME from URLCONTENT";

SQLHelper.conn = conn;

list = SQLHelper.ExecuteReader(sql, null);

for(int i = 0 ; i < list.size(); i ++){

Object[] obj = (Object[]) list.get(i);

id = Integer.parseInt(obj[0].toString());

urltitle = ((String) obj[1]).trim();

if(obj[2] == null||"".equals(((String) obj[2]).trim())){

 srcnames = "";

}else{

 srcnames = ((String) obj[2]).trim();

}

String titlenum = null;

String newcol = "";

if(!urltitle.contains("-")){

 urltitle = urltitle+"-";

}

 titlenum = (urltitle.substring(urltitle.lastIndexOf(" ")+1, urltitle.lastIndexOf("-"))).trim();

 if(srcnames!=null){

  String[] srcname = srcnames.split(";");

  for(int j = 0 ; j < srcname.length ; j ++){

  if(srcname[j]!=null&&srcname[j].length()!=0){

   if(!srcname[j].trim().contains("-")){

 srcname[j] = srcname[j].trim()+"-";

   }

  

   String srcnum = (srcname[j].trim().substring(srcname[j].trim().lastIndexOf(" ")+1, srcname[j].trim().lastIndexOf("-"))).trim();

   if(srcnum.equals(titlenum)){

 newcol = srcname[j].trim();

   }

  }

  }

 }

  

 updatesql.append("update URLCONTENT set col='"+newcol+"' where IR_SID="+id+";");

}

connect = DBConnectionManager.getInstance().getConnection();

SQLHelper.conn = connect;

SQLHelper.ExecuteNonQuerys(updatesql.toString(), null);

System.out.println("执行完毕!");



------解决方法--------------------------------------------------------
select IR_SID,IR_URLTITLE,IR_SRCNAME from URLCONTENT
你查询出来的数据并没有按照指定条件排序,所以查询出来的结果集的顺序也不同
所以每一次都不一样
------解决方法--------------------------------------------------------
select IR_SID,IR_URLTITLE,IR_SRCNAME from URLCONTENT where IR_SID = 5963

然后跟踪调试程序看看是什么情况。

    
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: