问题描述
我把代码贴出来,大家看看,出什么问题了,数据库我用的是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一下就没重复问题了