是不是用substring了?里面的index值超出范围?

解决方案 »

  1.   

    java.lang.StringIndexOutOfBoundsException: String index out of range: -1通常什么时候会报上面这个错.!
      

  2.   

    我已经把while{}循环中的代码全部删掉了,让while空循环,可还是报错
      

  3.   

    <%@ page contentType="text/html; charset=GB2312" %>
    <%@ page language="java" import="java.sql.*" %>
    <%@ include file = "Translate/codechange.jsp" %><html><script language="JavaScript"></script></html><html>
    <head>
    <%!
       String sql = null;
    %>
    <title>福建旅游论坛</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <body>
    <table cellspacing="0" cellpadding="0" border="0" width="99%" align="center">
      <tr><td bgcolor="#009ACE"> <tr>
              <td width="734" class="tablerow" colspan="7" bgcolor="#FFFFFF" height="16">
                <table border="0" cellspacing="0" width="100%" cellpadding="0">
                  <tr>
                    <td width="12%"><font color="#333399"><b><img src="image/gb.gif" width="21" height="14">论坛公告:</b></font></td>
                    <td width="88%"> <marquee width="648" height="12" direction="left">
    </marquee> </td>
                  </tr>
                </table>
              </td>
            </tr>
            <tr bgcolor="#9CCFFF">
              <td width="15" height="14">&nbsp;</td>
              <td width="247" height="14" bgcolor="#9CCFFF">论坛列表</td>
              <td width="28" align="center" height="14">新窗</td>
              <td width="58" align="center" height="14">主题数量</td>
              <td width="57" align="center" height="14">贴子数量 </td>
              <td width="170" align="center" height="14">最后回复</td>
              <td width="63" align="center" height="14">版主</td>
            </tr>
    <%/////////////////////////////////////////////////////////////////////%> 
    <%  
            opendb.OpenDb workM = new opendb.OpenDb();
    sql="SELECT * FROM 论坛栏目"; ResultSet rs_boardinfo = workM.executeQuery(sql);
    while (rs_boardinfo.next())
    {
            String Time_Str=rs_boardinfo.getString("最后发表时间");
                    String Man_Str=rs_boardinfo.getString("最后发表人");
                    String Forum_id=rs_boardinfo.getString("论坛id");
                    String Forum_Mastor=rs_boardinfo.getString("版主姓名");

    if (Man_Str==null)
           Man_Str="无";
    else
    Man_Str="<a href='member.jsp?member="+Man_Str+"'>"+Man_Str+"</a>";


    if ((Forum_Mastor==null)||(Forum_Mastor.equals("")))
                       Forum_Mastor="招骋中...";
    else
    Forum_Mastor="<a href=member.jsp?member="+Forum_Mastor+">"+Forum_Mastor+"</a>";
    %>
    <tr bgcolor="#F7FBFF">
              <td align="center"  height="26" width="15"><img src="image/folder.gif" width="13" height="16"></td>
              <td height="26" width="247" bgcolor="#F7FBFF"><a href="board.jsp?fid=<%=Forum_id%>"> <%=rs_boardinfo.getString("论坛名称")%> </a>
                <br />
              </td>
              <td align="center" height="26" width="28">&nbsp;<a href="board.jsp?fid=<%=Forum_id%>" target="_blank"><img border="0" src="image/newwin.gif" width="14" height="11"></a></td>
              <td align="center" height="26" width="58"><%=rs_boardinfo.getString("主题数量")%></td>
              <td align="center" height="26" width="57"><%=rs_boardinfo.getString("贴子数量")%></td>
              <td height="26" width="170">时间:<%=Time_Str.substring(0,16)%><br>
                作者:<%=Man_Str%></a></td>
              <td align="center" height="26" width="63"><%=Forum_Mastor%></td>
            </tr>
    <%
            }
    %>
      

  4.   

    你检查一下所有有substring()的地方。应该就是只有这些地方出错了!
      

  5.   

    wo 发现只要加上ResultSet rs_boardinfo = workM.executeQuery(sql);这段
    就报java.lang.StringIndexOutOfBoundsException: String index out of range: -1 错误如果把ResultSet rs_boardinfo = workM.executeQuery(sql);去掉就没有问题了,是不是数据库中的数据在放到ResultSet rs_boardinfo 中的时候有什么限制。楼上所说的检查substring()地方我试过了,把substring全都去掉,还是报同样的错.
      

  6.   

    论坛id bigint 8 0
    论坛名称 varchar 50 1
    创建时间 datetime 8 1
    版主姓名 char 10 1
    版主密码 char 10 1
    贴子数量 bigint 8 1
    主题数量 bigint 8 1
    最后发表人 char 50 1
    最后发表时间 datetime 8 1
    1 维权论坛 2004-10-09 14:19:41.860 张湖     122      12 233    dd 
    2004-10-09 14:19:41.860
    2 时事纵横 2004-10-09 14:19:45.733 罗胜     34        23 23  dd      2004-10-09 14:19:45.733
      

  7.   

    ResultSet rs_boardinfo = workM.executeQuery(sql); 的确是这句话有问题,因为我换成另外一条sql语句查别的表就没有问题,好奇怪
      

  8.   

    opendb.OpenDb的executeQuery()方法的实现会不会有错误阿!
    看错误你
    try{
        ... ...
    }catch(Exception e){
        e.printStackTrace();
    }
    这样可以看见错误的抛出点...
    你把ResultSet rs_boardinfo = workM.executeQuery(sql); 
    改成:
    ResultSet rs_boardinfo = null;
    try{
        rs_boardinfo = workM.executeQuery(sql);
    }catch(Exception e){
        e.printStackTrace();
    }
    这样试试看,能不能捕获到真正的错误源!
      

  9.   

    你用的是什么数据库?我有一次用的是mysql,错误和你的相反,我的是“index out of 26”,我改成了sql server就没这事了。我想可能就是数据库的字符集的问题。