在线讨论。请问如何在查询的结果中分页?
有没有更好的方法?
下面是我写的,可是在翻页时总是出现
Before start of result set
错误,
附件有connMysql.ConnMysql
主要是执行executeQuery()的,
error.jsp显示错误的,
如果嫌烦,可以不看我的代码,能不能提供更好的方法
请问是什么原因?
<!-- search.jsp -->
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="../error.jsp?from=adminpages.jsp" %>
<jsp:useBean id="connMysql" scope="page" class="connMysql.ConnMysql"/>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>政策法规查询</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
<body>
<form name="form1" id="form1" method="post" action="search.jsp">
<table width="100%" border="0">
<tr>
<td>名称
<input name="sName" type="text" id="sName" size="20" />
颁发单位
<select name="sUnit" id="sUnit">
<option value="" >不限</option>
<%
ResultSet rsUnit=connMysql.executeQuery("select unit from zcfg");
while(rsUnit.next()){
String unit=rsUnit.getString("unit");
%>
<option value="<%= unit %>" ><%= unit %></option>
<%
}
%>
</select>
文号
<input name="sFileNo" type="text" id="sFileNo" size="15" />
颁布日期
<input name="sDate" type="text" id="sDate" size="4" />
年
<select name="order" id="order">
<option value="date1" selected="selected">按日期排序</option>
<option value="name">按名称排序</option>
</select>
<input type="submit" name="Submit" value="查询" /> </td>
</tr>
</table>
</form><%!
int allPage,start=0,max=5;
int all,currentPage,nextStart,upStart,lastStart;
String sql,clause,sName,sUnit,sFileNo,sDate,order;
%>
<%
if(request.getParameter("Submit")!=null){
//out.println(request.getParameter("Submit"));
if(request.getParameter("start")!=null){
start=Integer.parseInt(request.getParameter("start"));
sName=new String(request.getParameter("Name").getBytes("ISO8859_1"),"GB2312");
sUnit=new String(request.getParameter("Unit").getBytes("ISO8859_1"),"GB2312");
sFileNo=new String(request.getParameter("FileNo").getBytes("ISO8859_1"),"GB2312");
sDate=new String(request.getParameter("Date").getBytes("ISO8859_1"),"GB2312");
order=new String(request.getParameter("rder").getBytes("ISO8859_1"),"GB2312");
}else{
sName=new String(request.getParameter("sName").getBytes("ISO8859_1"),"GB2312");
sUnit=new String(request.getParameter("sUnit").getBytes("ISO8859_1"),"GB2312");
sFileNo=new String(request.getParameter("sFileNo").getBytes("ISO8859_1"),"GB2312");
sDate=new String(request.getParameter("sDate").getBytes("ISO8859_1"),"GB2312");
order=new String(request.getParameter("order").getBytes("ISO8859_1"),"GB2312");
}
sql="select name,unit,fileno,date1 from zcfg where 1 and name like '"+"%"+sName+"%"+"' and unit like '%"+sUnit+"%' and fileno like '"+"%"+sFileNo+"%"+"' and date1 like '"+"%"+sDate+"%"+"' order by "+order+" desc limit "+start+","+max+"";
clause=sql.substring(39);
ResultSet rsCount=connMysql.executeQuery("select count(*) from zcfg "+clause);
rsCount.last();
all=rsCount.getInt(1);
rsCount.first();
allPage=(int)(all/max)+1;
currentPage=(int)(start/max)+1;
nextStart=max*currentPage;
upStart=max*(currentPage-2);
lastStart=max*(allPage-1);
if(rsCount!=null) rsCount.close();
if(nextStart>all) nextStart=lastStart;
if(upStart<0) upStart=0;
%>
<table width="100%" border="1" class="table1"><tr><td>sdf</td></tr>
<%
ResultSet rsS=connMysql.executeQuery(sql);
while(rsS.next()){
String rName=rsS.getString("name"),
rUnit=rsS.getString("unit"),
rFileNo=rsS.getString("fileno"),
rDate1=rsS.getString("date1");
%>
<tr>
<td>名称:<%= rName %></td>
</tr>
<tr>
<td>颁布日期:<%= rDate1 %> 颁发单位简称:<%= rUnit %>文号:<%= rFileNo %> </td>
</tr>
<%
}
%>
</table>
<table border=1><tr><td>共<%=all %>条 <%= allPage %>页 第<%=currentPage %>页 <a href="<%= request.getRequestURI() %>?start=0&Name=<%= sName %>&Unit=<%= sUnit %>&FileNo=<%= sFileNo %>&Date=<%= sDate %>&rder=<%= order %>&Submit=Submit">首页</a> <a href="search.jsp?start=<%= upStart %>&Name=<%= sName %>&Unit=<%= sUnit %>&FileNo=<%= sFileNo %>&Date=<%= sDate %>&rder=<%= order %>&Submit=Submit">上一页</a> <a href="search.jsp?start=<%= nextStart %>&Name=<%= sName %>&Unit=<%= sUnit %>&FileNo=<%= sFileNo %>&Date=<%= sDate %>&rder=<%= order %>&Submit=Submit">下一页</a> <a href="search.jsp?start=<%= lastStart %>&Name=<%= sName %>&Unit=<%= sUnit %>&FileNo=<%= sFileNo %>&Date=<%= sDate %>&rder=<%= order %>&Submit=Submit">尾页</a></td></tr></table>
<%
}
%>
</body>
</html>
问题点数:100、回复次数:3Top
1 楼hotenM(南京)回复于 2002-11-14 09:09:22 得分 20
Before start of result set
没有rs.next()
就进行rs操作
ps:你的程序我没有看Top
2 楼crazy(Out of MEmory)回复于 2002-11-14 09:15:24 得分 0
这个错误我已经查过,
可是我明明已经rs.next() 了呀,实在没办法时我还rs.first()了呢,
呵呵,谢了,我再看看,
欢迎大家UPTop
3 楼xiaobi_liang(淡泊以明志,宁静以致远...)回复于 2002-11-14 09:23:48 得分 80
没有你的表,运行不了你的程序
在你第一次查询出行数并用
在rsCount.last()前加上if(rsCount.next())判断来看看?
不过程序比较难看,可以考虑写在BEAN中。
这几天正在研究,成形后会帖上来的
Top




