CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

这样的错误:Column Index out of range, 5 > 4。实在查不出,高手看看

楼主tangguohua1983(国华)2006-06-02 16:39:14 在 Java / Web 开发 提问

org.apache.jasper.JasperException:   Exception   in   JSP:   /lib/second/querrylatemonth.jsp:101  
   
  98:               <div   align="center"><%=rs.getString(5)%></div>  
  99:     </td>  
  100:     <td>  
  101:               <div   align="center"><%=rs.getString(6)%></div>  
  102:     </td>  
  103:     </tr>  
  104:   <%  
   
   
  Stacktrace:  
  org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)  
  org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)  
  org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)  
  org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
   
   
  root   cause    
   
  javax.servlet.ServletException:   Column   Index   out   of   range,   5   >   4.    
   
  问题点数:20、回复次数:7Top

1 楼tangguohua1983(国华)回复于 2006-06-02 16:40:50 得分 0

首页:  
  <%@   page   contentType="text/html;   charset=gb2312"   %>  
  <!DOCTYPE   html   PUBLIC   "-//W3C//DTD   XHTML   1.0   Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  <html   xmlns="http://www.w3.org/1999/xhtml">  
  <head>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312"   />  
  <title>职工考勤情况查询</title>  
  <style   type="text/css">  
  <p   align="left">请输入查询的日期:</p>  
   
      <p>  
          <select   name="year1"   class="num">  
          <option   selected>2006          
          <option>2007          
          <option>2008          
          <option>2009          
          <option>2010          
          <option>2011          
        </select>  
      年  
      <select   name="month1"   class="num">  
          <option>01          
          <option>02          
          <option>03          
          <option>04          
          <option   selected>05          
          <option>06          
          <option>07          
          <option>08          
          <option>09          
          <option>10          
          <option>11          
          <option>12  
          </select>  
      月  
          <select   name="day1"   class="num">  
          <option   selected>01          
          <option>02          
          <option>03          
          <option>04          
          <option>05          
          <option>06          
          <option>07          
          <option>08          
          <option>09          
          <option>10          
          <option>11          
          <option>12  
          <option>13          
          <option>14          
          <option>15          
          <option>16          
          <option>17          
          <option>18          
          <option>19          
          <option>20          
          <option>21          
          <option>22  
          <option>23          
          <option>24          
          <option>25          
          <option>26          
          <option>27          
          <option>28          
          <option>29          
          <option>30  
          <option>31      
          </select>  
      日</p>  
      <p><span   class="STYLE1">说明:按年月查询时,只需设置好年和月,日期不用管</span>!</p>  
      <p>请选择查询种类:</p>  
      <p>  
          <input   name="querrylate"   type="submit"   id="querrylate"   value="查询该天迟到情况"    
                onClick="javascript:document.form1.action='querrylateday.jsp';"  
                document.form1.submit();"/>  
      <input   name="querrylate2"   type="submit"   id="querrylate2"   value="查询该月迟到情况"    
                onclick="javascript:document.form1.action='querrylatemonth.jsp';"  
                document.form1.submit();="document.form1.submit();">  
      </p>  
      <p>  
          <input   name="querrylate22"   type="submit"   id="querrylate22"   value="查询该年迟到情况"    
                onclick="javascript:document.form1.action='querrylateyear.jsp';"  
                document.form1.submit();="document.form1.submit();"   />  
          <input   name="querryall"   type="submit"   id="querryall"   value="查询所有职工信息"    
  onclick="javascript:document.form1.action='http://localhost:8080/myjsp/lib/second/querryall.jsp';    
                    document.form1.submit();"/>  
      </p>  
      <p>  
          <input   name="querryout"   type="submit"   id="querryout"   value="查询所有早退情况"    
  onclick="javascript:document.form1.action='querryout.jsp';"  
                document.form1.submit();"/>  
          <input   name="querryall2"   type="submit"   id="querryall2"   value="查询所有旷工情况"    
  onClick="javascript:document.form1.action='querryno.jsp';"  
                document.form1.submit();"/>  
      </p>  
  </form>  
  <span   class="STYLE2">  
    <input   name="reset2"   type="button"   value="重   置"     onclick="javascript:location.reload()"   class="button"   />  
    <input   name="print2"   type="submit"   id="print2"   value="打   印"   onclick="javascript:window.print()"   class="button"   />  
    <input   name="shut2"   type="submit"   id="shut2"   value="关   闭"   onclick="window.close();return   false;"   class="button"   />  
  </span>  
  </body>  
  </html>  
  Top

2 楼tangguohua1983(国华)回复于 2006-06-02 16:45:19 得分 0

'querrylatemonth.jsp文件:  
   
  <%@   page   contentType="text/html;   charset=gb2312"   %>  
  <%@   page   import="com.mysql.jdbc.Driver"   %>  
  <%@   page   import="java.sql.*"   %>  
  <%@   page   import="java.lang.*"   %>  
  <%@   page   import="java.text.ParseException"   %>  
  <html>  
  <head><title>查询所有信息</title></head>  
  <body>  
  <%  
  String   year1=request.getParameter("year1");  
  String   y1=year1.substring(2,4);  
  String   m1=request.getParameter("month1");  
  String   d1=request.getParameter("day1");  
  String   type=request.getParameter("type");  
  //int   rowcount=0;  
  int   t;  
  t=Integer.parseInt(type,   10);           //判断是所有的还是当个职工号  
  String   card=request.getParameter("card");  
  String   name=request.getParameter("name");  
   
      //驱动程序名  
      String   driverName="com.mysql.jdbc.Driver";  
      //数据库用户名  
      String   userName="test";  
      //密码  
      String   userPasswd="123";  
      //数据库名  
      String   dbName="te";  
      //表名  
      String   tableName="Visit";  
      //联结字符串  
      String   url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;  
      Class.forName("com.mysql.jdbc.Driver").newInstance();//加载及注册JDBC驱动程序  
      Connection   connection=DriverManager.getConnection(url);//获得url对应数据库的一个connection对象引用  
      Statement   statement   =   connection.createStatement();//返回statement对象  
   
  String   sql=null;       //一定要初始化!  
  if   (t==1)  
  sql="SELECT   CardID,name,dept,VisitTime   FROM   "+tableName+"   where   substring(CardID,1,2)='MT'   and   substring(visittime,1,2)='"+y1+"'   and   substring(visittime,4,2)='"+m1+"'   and     (   substring(visittime,10,2)='08'   or   substring(visittime,10,2)='09'   or   substring(visittime,10,2)='10'or   substring(visittime,10,2)='11')";  
  else   if   (t==2)  
  sql="SELECT   CardID,name,dept,VisitTime   FROM   "+tableName+"   where   CardID='"+card+"'   and   substring(visittime,1,2)='"+y1+"'   and   substring(visittime,4,2)='"+m1+"'   and   (   substring(visittime,10,2)='08'   or   substring(visittime,10,2)='09'   or   substring(visittime,10,2)='10'or   substring(visittime,10,2)='11')";  
  else    
  sql="SELECT   CardID,name,dept,VisitTime   FROM   "+tableName+"   where   name='"+name+"'   and   substring(visittime,1,2)='"+y1+"'   and   substring(visittime,4,2)='"+m1+"'   and   (   substring(visittime,10,2)='08'   or   substring(visittime,10,2)='09'   or   substring(visittime,10,2)='10'or   substring(visittime,10,2)='11')";  
  ResultSet   rs   =   statement.executeQuery(sql);   //执行查询语句并结果返回到结果集  
  //rs.last();  
  //int   row=rs.getRow();//只是当前行!  
  //out.println(row);  
  //if   (row==0)   out.println("meirenchidao");  
  //else   rs.beforeFirst();  
  //if(!rs.next())out.println("没有人迟到");  
  //else   out.println("有人迟到");  
  //if(!rs.next())out.println("没有人迟到");  
  //ResultSetMetaData   rmeta   =   rs.getMetaData();//获得数据结果集合,包括列号、属性、每列类  
  //int   count=rmeta.getColumnCount();  
  //out.println(count);  
  %>  
   
  <%--  
  <div><marquee   align="left"   scrollamount="2">测试中,欢迎使用!制作:唐国华</marquee></div>  
  --%>  
   
  <table   width="423">  
  <tr>  
  <td   width="415"   align="center"   bgcolor="#FFFFF0">  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
  <%--<input   type="button"     value="返回"     onClick="history.go(-history.length)"   class="button">&nbsp;--%>  
  <input   type="button"     value="返回"     onClick="history.go(-1)"   class="button">  
  &nbsp;&nbsp;  
  <input   type="button"   name="close2"   value="关闭"     onClick="window.close();return   false;"   class="button">  
  &nbsp;     &nbsp;  
  <input   name="button"   type="button"   class="button"     onClick="javascript:window.print()"     value="打印"></td>  
  </tr>  
  </table>  
  迟到情况统计表  
  <table   border="1">  
      <tr>    
    <td   bgcolor="#CCCCFF">  
              <div   align="center">   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       卡号     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </div>  
    </td>  
    <td   bgcolor="#CCCCFF">  
              <div   align="center">   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     姓名     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </div>  
    </td>  
    <td   bgcolor="#CCCCFF">  
              <div   align="center">   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       部门       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </div>  
    </td>  
  <td   bgcolor="#CCCCFF">  
              <div   align="center">     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     刷卡时间       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </div>  
    </td>  
    </tr>  
  <%   while(rs.next()){  
  //   rowcount=rowcount+1;    
  %>  
      <tr>  
      <td>  
              <div   align="center"><%=rs.getString(2)%></div>  
      </td>  
    <td>  
              <div   align="center"><%=rs.getString(3)%></div>  
    </td>  
    <td>  
              <div   align="center"><%=rs.getString(5)%></div>  
    </td>  
    <td>  
              <div   align="center"><%=rs.getString(6)%></div>  
    </td>  
    </tr>  
  <%  
  }   //while  
  //out.println("共"+rowcount+"条记录");  
  %>  
  </table>  
  <%  
  //int   row=rs.getRow();  
  //out.println(row);  
  //if   (row==0)   out.println("没有人迟到");  
  rs.close();        
  statement.close();        
  connection.close();        
  %>      
  </body>  
  </html>  
   
   
   
  加了打印错误的语句后却是这样的报错信息:  
  org.apache.jasper.JasperException:   Unable   to   compile   class   for   JSP  
   
  An   error   occurred   at   line:   9   in   the   jsp   file:   /lib/second/querrylateday.jsp  
  Generated   servlet   error:  
  rs   cannot   be   resolved  
   
  An   error   occurred   at   line:   89   in   the   jsp   file:   /lib/second/querrylateday.jsp  
  Generated   servlet   error:  
  rs   cannot   be   resolved  
  。。。。Top

3 楼tangguohua1983(国华)回复于 2006-06-02 16:46:15 得分 0

应该是sql语句那里有问题‘  
  就改了一下那里  
  已经运行好了的Top

4 楼OnlyFor_love(『勾勾手指头 一辈子不分手』)回复于 2006-06-03 08:56:03 得分 15

SELECT   CardID,name,dept,VisitTime     你只是查询这四个字段的值  
  但是你却用了rs.getString(5)     最多也就rs.getString(4)Top

5 楼qqulijun(探讨中国软件)回复于 2006-06-03 11:08:11 得分 5

列索引超出范围Top

6 楼harston(顽石)(风停了,雨停了,一路泥泞~)回复于 2006-06-03 11:12:29 得分 0

<div   align="center"><%=rs.getString(5)%></div>  
  99:     </td>  
  100:     <td>  
  101:               <div   align="center"><%=rs.getString(6)%></div>  
  102:     </td>  
  103:     </tr>  
  104:   <%  
  你都get到6了哦,强Top

7 楼tangguohua1983(国华)回复于 2006-06-03 16:46:26 得分 0

rs.getString(5)不是对应原表的第5列阿,  
  见笑了  
  开始用了1,2,3,4,发现有错误  
  后来用原表的序号,竟然通过,所以得出结论是对应原表的  
  看样子是我错了  
  哈哈  
  顺便贴出原版解释:  
  public   String   getString(int   columnIndex)  
                                    throws   SQLException  
  Retrieves   the   value   of   the   designated   column   in   the   current   row   of   this   ResultSet   object   as   a   String   in   the   Java   programming   language.Top

相关问题

关键词

得分解答快速导航

  • 帖主:tangguohua1983
  • OnlyFor_love
  • qqulijun

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo