关于分页控制器的问题

seerzfm 2005-12-19 10:10:53
在我翻页前,别人把第一页的数据删除了一条。则我的下一页会漏掉一条记录,请问有什么好的解决办法。

例如:我的数据库中有10条记录1,2,3,4,5,6,7,8,9,10。每页显示5条。
当我浏览第一页的时候显示1,2,3,4,5,如果我选择下一页,应该显示6,7,8,9,10。但是在我点击下一页前,某人删除了第1条记录,我在点击下一页时显示的记录是7,8,9,10,少了第6条记录,请问各位有什么办法防止这种情况吗?

不知道说清楚了没有

多谢
...全文
160 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
削死壹狼 2005-12-28
  • 打赏
  • 举报
回复
我的意思不是说那种固定的索引,而是动态的。每次的索引都是计算出来的所以不会有问题。
我自己就是这么用的,我回去试了你说的那两种情况都没有问题,上翻页也没有问题,即使点下一页之前把记录全删除了也没有问题,我特意作了实验的。
下面是我自己用的代码,给你作个参考,希望对你有帮助。
<%
sql="select * from guestbook order by id desc";
rs=odb.executeQuery(sql);
if(!rs.last()){
out.println("<tr><td align=center>没有客户留言</td></tr>");
}else{
RecordNum = rs.getRow();

PageNum = (RecordNum+PageSize-1) / PageSize;
if(CurrentPage>PageNum) CurrentPage = PageNum;
if(PageNum>0){
CurrentIndex=(CurrentPage-1) * PageSize + 1;
rs.absolute(CurrentIndex);
int endRow=CurrentIndex+PageSize;
while(!rs.isAfterLast()&&rs.getRow()!=endRow){
%>
<!---这里读数据-->
<%
rs.next();
}
rs.close();
}
}
%>
削死壹狼 2005-12-19
  • 打赏
  • 举报
回复
做分页的时候可以把每一页的第一条记录作为索引,每次读的时候从那个索引开始读应该就不会出现这个问题啦。比如你的例子中:数据库中有10条记录1,2,3,4,5,6,7,8,9,10。每页显示5条。
那么第一页的索引就是第1条记录,下一页的就是第6条记录。这样你要显示下一页时从第6条这个索引连续读5条出来就行啦,这样有人删除了记录应该也没有问题的。
不知说明白了吗
seerzfm 2005-12-19
  • 打赏
  • 举报
回复
是啊,但是在显示的时候感觉让用户少看到了一条记录,
因为如果这时用户不去再看的一页,那他就会看不到第6条记录,给用户的感觉是第6条记录不存在。
huangdeji 2005-12-19
  • 打赏
  • 举报
回复
第六条被当作第一页的数据处理了嘛
seerzfm 2005-12-19
  • 打赏
  • 举报
回复
这样更不行了,数据不同步了啊。
huangdeji 2005-12-19
  • 打赏
  • 举报
回复
你可以把数据都取出来放到内存里,那么别人删除数据库的纪录对你一点影响也没有
seerzfm 2005-12-19
  • 打赏
  • 举报
回复
多谢。
但是如果点下一页的时候别人把第6条记录删除了,那索引还会找到吗?

81,092

社区成员

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

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