求教大伙一个问题,关于java分页时,显示重复数据的。。

问题描述

我把代码贴出来,大家看看,出什么问题了,数据库我用的是oracle。这是jsp页面的:<body><%intpageSize=7;//每页显示多少条intpageNow=1;//默认显示第一页introwCount=0;//一共多少条记录intpageCount=0;//一共有多少页//接受用户希望显示的页数(pageNow)Strings_pageNow=request.getParameter("pageNow");if(s_pageNow!=null){pageNow=Integer.parseInt(s_pageNow);}//查询得到rowCountClass.forName("oracle.jdbc.driver.OracleDriver");Connectionct=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","x1","abc");Statementsm=ct.createStatement();ResultSetrs=sm.executeQuery("selectcount(*)fromProducts");if(rs.next()){rowCount=rs.getInt(1);}//计算pageCountif(rowCount%pageSize==0){pageCount=rowCount/pageSize;}else{pageCount=rowCount/pageSize+1;}//查询出需要显示的记录//Stringusername=session.getAttribute("un").toString();rs=sm.executeQuery("select*fromProductswhererownum<="+pageSize+"andProducts.CategoryID=2andStateValue=1andProducts.ProductIDnotin(selectProductIDfromProductswhererownum<="+pageSize*(pageNow-1)+")");%><divid="bmain2"><tablewidth="790"cellspacing="0"cellpadding="0"align="center"border="1"><tr><tdcolspan="6"align="center"bgcolor="#75dddd"><fontsize="+3"color="#FF0000">手机信息</font></td></tr><tr><td>图片</td><td>商品名称</td><td>团购价格</td><td>描述</td><td>操作</td></tr><%while(rs.next()){%><tr><td><imgsrc="<%=rs.getString(9)%>"width="130"height="80"></td><td><%=rs.getString(2)%></td><td><%=rs.getString(4)%></td><td><%=rs.getString(5)%></td><td><ahref="order.jsp"><imgsrc="img/img9/product.gif"></a></td></tr><%}%><tr><tdcolspan="9"align="center"><%//上一页if(pageNow!=1){out.println("<ahref=telephone.jsp?pageNow="+(pageNow-1)+">上一页</a>");}for(inti=1;i<=pageCount;i++){out.println("<ahref=telephone.jsp?pageNow="+i+">["+i+"]</a>");}//下一页if(pageNow!=pageCount){out.println("<ahref=telephone.jsp?pageNow="+(pageNow+1)+">下一页</a>");}%></td></tr></table></div>数据库表式这样的:详细产品CreateTableProducts(ProductIDnumber(4)primarykey,--详细产品IDProductNamevarchar2(30)notnull,--详细产品名称CategoryIDintreferencesCategories(CategoryID),--产品所属类别IDUnitPricevarchar2(15)notnull,--团购价格ProductDesvarchar2(50),--产品信息描述UserIDnumber(4)referencesuserInfo(User_ID),--UserID为产品所属人SupplierIDintreferencesSuppliers(SupplierID)--产品所属的供应商UpdatedDatedatedefault(sysdate),--产品信息更新时间Picturevarchar2(50),--产品的图片StateValuenumber(4)default(0),--状态值,0:待审批1:审批通过2:审批不通过3:被发布人删除HitCountnumber(4)default(0),--人气,点击率Scorenumber(4)default(0)--评价分数)现在的问题是,第一页和他都面的一页,有某些数据时相同的,,,不知道什么地方出问题了?

解决方案

解决方案二:
你调试一下看下每次的pageNow是否不一样。
解决方案三:
select*from(select*fromProductswhere1=1andProducts.CategoryID=2andStateValue=1andProducts.ProductIDnotin(selectProductIDfromProducts))swhererownum<="+pageSize+"andrownum<="+pageSize*(pageNow-1)+"把rownum嵌到最外面.因为rownum是变动的。比如一比数据rownum是20,过滤下,可能这笔数据rownum就是10了.
解决方案四:
查看一下你的SQL语句可能是你SQL写的有问题
解决方案五:
rs=sm.executeQuery("select*fromProductswhererownum<="+pageSize+"andProducts.CategoryID=2andStateValue=1andProducts.ProductIDnotin(selectProductIDfromProductswhererownum<="+pageSize*(pageNow-1)+")");当PageSize=1时不成立
解决方案六:
orderby一下就没重复问题了

时间: 2024-10-11 01:11:17

求教大伙一个问题,关于java分页时,显示重复数据的。。的相关文章

java以webservice形式向发送远程数据,发送时出现重复数据,如何解决?

问题描述 java以webservice形式向发送远程数据,发送时出现重复数据,如何解决? 我是用java从本地数据库中(oracle)提取数据后,封装,发送给远程服务器,然后远程服务器会返回发送结果代码. 我在主表中的每条数据都有一个字段显示其发送次数,还有一个字段显示发送结果.再有一张结果表,专门存储每条数据每次发送的结果和错误原因等详细信息.两张表是一对多关系.主表对每条数据是唯一的,当发送完,次数字段会增加1,发送结果也会更新 最新一次数据发送的结果.平时数据量小的时候完全没有问题,比如

java类的问题-java分页只显示第一页,其他也不显示

问题描述 java分页只显示第一页,其他也不显示 java查出来的数据有多页第一页显示,其他页点击什么都不显示了,统计出来的所有数据是对的,但是就是不能查看. 解决方案 慢慢跟,step1: 数据传到后台没 step2: sql可以正确执行么? step3: 执行结果可以正确接收么? step4:传回前端没? step5: js等脚本正确么? 这些问题都会导致你现在的现实问题.最好的办法一步步跟. 解决方案二: 也许是页码传递有问题 解决方案三: 看看后台有没有得到前台传过去的pageNo(当前

sql-MySql执行分页时查询统计数据量的Sql语句差别及性能

问题描述 MySql执行分页时查询统计数据量的Sql语句差别及性能 现在开发系统,涉及到了分页查询,在做的时候就在想,能不能自动把查询sql语句通过参数自动封装成能够统计查询语句不在分页条件下查询出的数据量有多大,例如一般做法是: 1.先根据拼接的sql语句进行查询:select * from ecs_goods where goods_type = 1 limit 1000, 10 2.再统计数量:select count(*) from ecs_goods where goods_type

数据库时时刷新-瀑布流加载数据时出现重复数据(数据库时时更新)

问题描述 瀑布流加载数据时出现重复数据(数据库时时更新) 用瀑布流展示数据的时候,展示第一页数据时候服务器没有新的数据,当从服务器抓取第二页的数据时候,服务器刷新了数据多了2条数据,这个时候在抓取到的第二页的数据中就会有刚才抓取的第一页的数据,这个问题怎么处理啊? 解决方案 其实你做一个预加载功能,加载20条数据,显示10条数据.这样重复问题给客户的感受就没有那么强了!.你在有一个刷新功能. 解决方案二: 删除数据库中重复数据的几个方法删除数据库中重复数据的几个方法

实现一个简单的Java编译时注解处理器

简介 Java注解又称Java标注,是Java语言5.0版本开始支持加入源代码的特殊语法元数据.Java语言中的类.方法.变量.参数和包等都可以被标注.Java标注和Javadoc不同,标注有自反性.在编译器生成类文件时,标注可以被嵌入到字节码中,由Java虚拟机执行时获取到标注.根据元注解@Retention指定值的不同,注解可分为SOURCE.CLASS和RUNTIME三种类型.当被声明为SOURCE时,注解仅仅在源码级别被保留,编译时被丢弃:声明为CLASS时,注解会由编译器记录在clas

java模态窗口显示默认数据

问题描述 如图点击企业联系人时,会弹出模态窗口,如何判断,当只有一个联系人的时候,会直接在页面上显示 解决方案 解决方案二:来人啊,帮个忙啊

分享MYSQL插入数据时忽略重复数据的方法_Mysql

使用下以两种方法时必须把字段设为"主键(PRIMARY KEY"或"唯一约束(UNIQUE)".1:使用REPLACE INTO (此种方法是利用替换的方法,有点似类于先删除再插入)  复制代码 代码如下: REPLACE INTO Syntax  REPLACE [LOW_PRIORITY | DELAYED]      [INTO] tbl_name [(col_name,...)]      {VALUES | VALUE} ({expr | DEFAULT}

有什么办法修改浏览器上网时显示的数据

问题描述 请教一下,比如我支付宝里只有100块,但我想把它显示成1万块,每次加载支付宝这个网页让程序自动把显示的100块改成1万块显示,只是让它显示成1万块,我可以等网页加载完后手动修改标签里的内容,但一刷新就恢复原来的数据了,马上就被识破了,能不能用软件自动修改,每次加载这个网页软件都自动改,我是小白,不知道怎么实现,希望能详细一点 解决方案 解决方案二:chrome,插件--不就是js改个值么--解决方案三:引用1楼starfd的回复: chrome,插件--不就是js改个值么-- 我用的是

sql排序分页 如果有新数据插入

问题描述 sql排序分页 如果有新数据插入 sql排序分页 如果有新数据插入并且排序在前面,那取第二页的时候就会有重复数据,而且新插入的数据展示不出来了,怎么解决呢? 各位可能没理解我意思: 比如说现在数据库里面几千万数据,还是实时插入的数据,我想排序后分页取,比如说第一次通过代码给数据库传参取第一页,取100条, 1.这个过程数据库是把所有数据几千万条全部load到内存中排序,然后进行分页,然后取出前100条吗? 2.那第二次,还会再load所有数据一次重新排一次序,再取出101-200之间的