求助:查询第一条记录不能显示的问题

zjh1983314 2006-02-23 09:15:33
我把查询结果用分页显示,但是结果的第一条记录不能显示出来,其他一切正常,应该是算法问题,我改了很多次,都不能解决问题,有哪位大哥大姐帮忙解决一下。谢谢!!

<%@ page import="java.lang.*, java.io.*,java.sql.*, java.util.*" contentType="text/html;charset=gb2312" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<html>
<body>
<%! int pageSize=10; int pageCount=0; %>
<form action="mulu.jsp" method="post">
年月:    
<select name="month" multiple size="1">
<option value="nian">2005</option>
<option>2006</option>
</select> 年

<select name="data" size="1">
<option value="yue">一月</option>
<option>二月</option>
<option>三月</option>
<option>四月</option>
<option>五月</option>
<option>六月</option>
<option>七月</option>
<option>八月</option>
<option>九月</option>
<option>十月</option>
<option>十一月</option>
<option>十二月</option>
</select>
日期:     <input type="text" name="data"><br>
销售代表: <input type="text" name="xName" <%if(request.getParameter("xName")!=""&&request.getParameter("xName")!=null){
%>value="<%=new String(request.getParameter("xName").getBytes("iso-8859-1"),"gb2312") %>"
<%}%>>

单位名称: <input type="text" name="dName" <%if(request.getParameter("dName")!=""&&request.getParameter("dName")!=null){
%>value="<%=new String(request.getParameter("dName").getBytes("iso-8859-1"),"gb2312") %>"
<%}%>><br>

接单人:   <input type="text" name="jName"><br>
<input type="submit" value="查询"><br>
输入页码数<input type="text" name="showPage" size="4">
<input type="submit" value="提交">
</form>

<%
int I=0;
String Name=request.getParameter("xName");
String DName=request.getParameter("dName");
if((Name!=null && Name!="")||(DName!=null && DName!="")){
I=1;
}
try{
Name=new String(Name.getBytes("iso-8859-1"),"gb2312");
DName=new String(DName.getBytes("iso-8859-1"),"gb2312");
}catch(Exception e){}
String tel=request.getParameter("tel");
String mob=request.getParameter("mob");
String cao=request.getParameter("cao");
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=muludengju";
String user="sa";
String password="151961404";
Connection conn=DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql="select * from mulu where 销售代表 like '%"+Name+"%' and 学校名称 like '%"+DName+"%' and 判断='"+I+"' ORDER BY 日期";
ResultSet rs=stmt.executeQuery(sql);
rs.last();
int lastRow=rs.getRow();
pageCount=(lastRow%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);
int showPage=1;
%>
</form>
<p>共有<%=pageCount %>页
每页<%=pageSize %>条记录
合计<%=lastRow %>条记录

<%String integer=request.getParameter("showPage");
if(integer==null){
integer="1";
}
try{
showPage=Integer.parseInt(integer);
}
catch(NumberFormatException e){
showPage=1;
}
if(showPage<=1){
showPage=1;
}
if(showPage>=pageCount){
showPage=pageCount;
}
int position=(showPage-1)*pageSize+1;
rs.absolute(position);
%>
<table Border bgcolor="9999cc">
<tr>
<th width=100><font size=2>日期</font>
<th width=50><font size=2>编号</font>
<th width=70><font size=2>业务员</font>
<th width=300><font size=2>单位名称</font>
<th width=50><font size=2>份数</font>
<th width=50><font size=2>寄送方式</font>
<th width=50><font size=2>地址</font>
<th width=50><font size=2>单位性质</font>
<th width=50><font size=2>目录性质</font>
<th width=50><font size=2>寄送日期</font>
</tr>
<%for(int i=1;i<=pageSize-1;i++){
if(rs.next()){%>
<tr align="center">
<td><font size=2><%=rs.getString(1) %></font></td>
<td><font size=2><%=rs.getString(2) %></font></td>
<td><font size=2><%=rs.getString(3) %></font></td>
<td><font size=2><%=rs.getString(4) %></font></td>
<td><font size=2><%=rs.getString(5) %></font></td>
<td><font size=2><%=rs.getString(6) %></font></td>
<td><font size=2><%=rs.getString(7) %></font></td>
<td><font size=2><%=rs.getString(8) %></font></td>
<td><font size=2><%=rs.getString(9) %></font></td>
<td><font size=2><%=rs.getString(9) %></font></td>
<%}
}%>
</table>
<%
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
...全文
180 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
interpb 2006-02-24
  • 打赏
  • 举报
回复
int position=(showPage-1)*pageSize+1;
rs.absolute(position);

当为showpage == 1 的时候 position = 0

你自己看看absolute的api可以知道答案,为0的时候游标指向哪里

feixianking 2006-02-24
  • 打赏
  • 举报
回复
你计算完总记录数lastRow=rs.getRow();后要把指针定位到第一条记录才行
zjh1983314 2006-02-24
  • 打赏
  • 举报
回复
帮忙顶啊!!都掉下去了
zjh1983314 2006-02-24
  • 打赏
  • 举报
回复
楼上的我试过,当查询的记录为空的时候就会出错。
xiongbing528 2006-02-24
  • 打赏
  • 举报
回复
<%for(int i=1;i<=pageSize-1;i++){
{%>
<tr align="center">
<td><font size=2><%=rs.getString(1) %></font></td>
<td><font size=2><%=rs.getString(2) %></font></td>
<td><font size=2><%=rs.getString(3) %></font></td>
<td><font size=2><%=rs.getString(4) %></font></td>
<td><font size=2><%=rs.getString(5) %></font></td>
<td><font size=2><%=rs.getString(6) %></font></td>
<td><font size=2><%=rs.getString(7) %></font></td>
<td><font size=2><%=rs.getString(8) %></font></td>
<td><font size=2><%=rs.getString(9) %></font></td>
<td><font size=2><%=rs.getString(9) %></font></td>
<%
rs.next();}
大概就是这样把。很长时间不写代码了。你自己调试下看看。
bluelily22 2006-02-24
  • 打赏
  • 举报
回复
你调rs.next()已经把当前记录前移了
把这个
if(rs.next())移到for循环的最后

改成这样
<%for(int i=1;i<=pageSize-1;i++){
%>
<tr align="center">
<td><font size=2><%=rs.getString(1) %></font></td>
<td><font size=2><%=rs.getString(2) %></font></td>
<td><font size=2><%=rs.getString(3) %></font></td>
<td><font size=2><%=rs.getString(4) %></font></td>
<td><font size=2><%=rs.getString(5) %></font></td>
<td><font size=2><%=rs.getString(6) %></font></td>
<td><font size=2><%=rs.getString(7) %></font></td>
<td><font size=2><%=rs.getString(8) %></font></td>
<td><font size=2><%=rs.getString(9) %></font></td>
<td><font size=2><%=rs.getString(9) %></font></td>
<%
if(!rs.next()){
break;
}
}%>
interpb 2006-02-24
  • 打赏
  • 举报
回复
第一页的时候要
rs.beforeFirst();就可以了
zjh1983314 2006-02-24
  • 打赏
  • 举报
回复
大哥,我现在要做的是把position=0还是不要=0?急!!
执假以为真 2006-02-23
  • 打赏
  • 举报
回复
学习,帮顶

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧