这样的错误:Column Index out of range, 5 > 4。实在查不出,高手看看
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">
<%--<input type="button" value="返回" onClick="history.go(-history.length)" class="button"> --%>
<input type="button" value="返回" onClick="history.go(-1)" class="button">
<input type="button" name="close2" value="关闭" onClick="window.close();return false;" class="button">
<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"> 卡号 </div>
</td>
<td bgcolor="#CCCCFF">
<div align="center"> 姓名 </div>
</td>
<td bgcolor="#CCCCFF">
<div align="center"> 部门 </div>
</td>
<td bgcolor="#CCCCFF">
<div align="center"> 刷卡时间 </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




