主题:谁来帮我看看

  1. 问题是我分页后排序出问题,我自己也说不清楚,就请大家帮我看看   
  2.   
  3. 接数据库的类   
  4. package connDB;   
  5.   
  6. import java.sql.*;   
  7. import java.util.ArrayList;   
  8. import java.util.List;   
  9.   
  10. public class Connbbs {   
  11.  /**  
  12.   * 获得 Connection 连接  
  13.   *   
  14.   * @return Connection  
  15.   */  
  16.  public static Connection getConn() {   
  17.   Connection conn = null;   
  18.   PreparedStatement pstmt = null;   
  19.   try {   
  20.    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");   
  21.   } catch (ClassNotFoundException e) {   
  22.    System.out.println("架桥失败!");   
  23.    e.printStackTrace();   
  24.   }   
  25.   try {   
  26.    conn = DriverManager   
  27.       .getConnection(   
  28.         "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=shout",   
  29.         "sa""");   
  30.   } catch (SQLException e) {   
  31.    System.out.println("连接失败!");   
  32.    e.printStackTrace();   
  33.   }   
  34.   return conn;   
  35.  }   
  36.  /**  
  37.   * 执行增、删、改 SQL 语句  
  38.   *   
  39.   * @param preparedSql  
  40.   * @param list  
  41.   * @return i  
  42.   */  
  43.  public int executeSQL(String preparedSql, List list) {   
  44.   Connection conn = null;   
  45.   ResultSet rs=null;   
  46.   PreparedStatement pstmt = null;   
  47.   int i = 0;   
  48.   try {   
  49.    conn = getConn(); // 得到数据库连接对象   
  50.    pstmt = conn.prepareStatement(preparedSql);   
  51.    if (list != null) {   
  52.     for (int a = 0; a < list.size(); a++) {   
  53.      pstmt.setObject(a + 1, list.get(a));//????????????   
  54.     }   
  55.    }   
  56.    i = pstmt.executeUpdate(); // 执行SQL语句   
  57.   } catch (Exception e) {   
  58.    e.printStackTrace(); // 处理异常   
  59.   } finally {   
  60.    closeAll(pstmt, conn,rs); // 关闭连接,释放资源   
  61.   }   
  62.   return i;   
  63.  }   
  64.  /**  
  65.   * 关闭连接  
  66.   *   
  67.   * @param rs  
  68.   * @param pr  
  69.   * @param con  
  70.   */  
  71.  public void closeAll(PreparedStatement pr, Connection con,ResultSet rs) {   
  72.   try {   
  73.    if (pr != null) {   
  74.     pr.close();   
  75.     pr = null;   
  76.    }   
  77.    if (con != null) {   
  78.     con.close();   
  79.     con = null;   
  80.    }   
  81.    if(rs!=null){   
  82.     rs.close();   
  83.     rs=null;   
  84.    }   
  85.   } catch (SQLException e) {   
  86.    System.out.println("关闭有误!");   
  87.    e.printStackTrace();   
  88.   }   
  89.  }   
  90. }   
  91.   
  92.   
  93. 封装实体类   
  94. package Entiyi;   
  95.   
  96. public class TouSuBaoGuangEntiyi {   
  97.  private int TouSuID;   
  98.  private String TouSuCreater;   
  99.  private String TouSuCreatTime;   
  100.  private String TouSutitle;   
  101.  private String TouSucontent;   
  102.  private String TouSuNumber;   
  103.  private String TouSuPhone;   
  104.  private String TouSuAddress;   
  105.  private int TouSuRcount;   
  106.  public String getTouSuAddress() {   
  107.   return TouSuAddress;   
  108.  }   
  109.  public void setTouSuAddress(String touSuAddress) {   
  110.   this.TouSuAddress = touSuAddress;   
  111.  }   
  112.  public String getTouSucontent() {   
  113.   return TouSucontent;   
  114.  }   
  115.  public void setTouSucontent(String touSucontent) {   
  116.   this.TouSucontent = touSucontent;   
  117.  }   
  118.  public String getTouSuCreater() {   
  119.   return TouSuCreater;   
  120.  }   
  121.  public void setTouSuCreater(String touSuCreater) {   
  122.   this.TouSuCreater = touSuCreater;   
  123.  }   
  124.  public String getTouSuCreatTime() {   
  125.   return TouSuCreatTime;   
  126.  }   
  127.  public void setTouSuCreatTime(String touSuCreatTime) {   
  128.   this.TouSuCreatTime =  touSuCreatTime;   
  129.  }   
  130.  public int getTouSuID() {   
  131.   return TouSuID;   
  132.  }   
  133.  public void setTouSuID(int touSuID) {   
  134.   this.TouSuID = touSuID;   
  135.  }   
  136.  public String getTouSuNumber() {   
  137.   return TouSuNumber;   
  138.  }   
  139.  public void setTouSuNumber(String touSuNumber) {   
  140.   this.TouSuNumber = touSuNumber;   
  141.  }   
  142.  public String getTouSuPhone() {   
  143.   return TouSuPhone;   
  144.  }   
  145.  public void setTouSuPhone(String touSuPhone) {   
  146.   this.TouSuPhone = touSuPhone;   
  147.  }   
  148.  public String getTouSutitle() {   
  149.   return TouSutitle;   
  150.  }   
  151.  public void setTouSutitle(String touSutitle) {   
  152.   this.TouSutitle = touSutitle;   
  153.  }   
  154.  public int getTouSuRcount() {   
  155.   return TouSuRcount;   
  156.  }   
  157.  public void setTouSuRcount(int touSuRcount) {   
  158.   TouSuRcount = touSuRcount;   
  159.  }   
  160. }   
  161.   
  162.   
  163. 查出数据的方法   
  164. /***  
  165.   * 查询留言版前页信息  
  166.   */  
  167.  public ArrayList<TouSuBaoGuangEntiyi> select(int Count) {   
  168.   ArrayList<TouSuBaoGuangEntiyi> list = new ArrayList<TouSuBaoGuangEntiyi>();   
  169.   Connection con = Connbbs.getConn();   
  170.   PreparedStatement ps = null;   
  171.   ResultSet rs = null;   
  172.   String sqlstr = "SELECT top 5 * FROM TouSuword where TouSuID not in (SELECT TOP "+ Count * 5 + " TouSuID from TouSuword)ORDER BY TouSuRcount DESC";   
  173.   try {   
  174.    ps = con.prepareStatement(sqlstr);   
  175.    rs = ps.executeQuery();   
  176.    while (rs.next()) {   
  177.     TouSuBaoGuangEntiyi obj = new TouSuBaoGuangEntiyi();   
  178.     obj.setTouSuID(rs.getInt(1));   
  179.     obj.setTouSuCreater(rs.getString(2));   
  180.     obj.setTouSuCreatTime(rs.getString(3));   
  181.     obj.setTouSutitle(rs.getString(4));   
  182.     obj.setTouSucontent(rs.getString(5));   
  183.     obj.setTouSuRcount(rs.getInt(6));   
  184.     list.add(obj);   
  185.    }   
  186.   } catch (SQLException e) {   
  187.    e.printStackTrace();   
  188.   }   
  189.   return list;   
  190.  }   
  191.   
  192.   
  193.   
  194.   
  195.   
  196. /**  
  197.   * 查出信息共多少条,多少页  
  198.   * @param Count  
  199.   * @return  
  200.   */  
  201.  public int[] selectAllPage(String sql, int row) {   
  202.   Connection con = Connbbs.getConn();   
  203.   PreparedStatement pr = null;   
  204.   ResultSet rs = null;   
  205.   int[] value = new int[2];   
  206.   int allrow = 0;   
  207.   try {   
  208.    pr = con.prepareStatement(sql);   
  209.    rs = pr.executeQuery();   
  210.    while (rs.next()) {   
  211.     allrow = rs.getInt(1);   
  212.    }   
  213.   } catch (SQLException e) {   
  214.    e.printStackTrace();   
  215.   } finally {   
  216.    Connbbs connbbs = new Connbbs();   
  217.    connbbs.closeAll(pr, con, rs);   
  218.   }   
  219.   int allPage = allrow / row;   
  220.   if (allrow % row > 0) {   
  221.    allPage++;   
  222.   }   
  223.   value[0] = allrow;// 总的条数   
  224.   value[1] = allPage;// 总的页数   
  225.   return value;   
  226.  }   
  227.   
  228. 页面   
  229. <%@ taglib prefix="c" uri="/WEB-INF/c.tld" %>   
  230. <%@ page language="java" pageEncoding="gbk"%>   
  231. <%@ page import="Entiyi.*"%>   
  232. <jsp:directive.page import="java.util.ArrayList" />   
  233. <%@ page import="Wrinkle.*"%>   
  234. <html>   
  235.  <head>   
  236.  <style type="text/css">   
  237. body,td,th {   
  238.  font-size: 9pt;   
  239. }   
  240.   
  241. .in {   
  242.  width: 150px;   
  243.  height: 15px;   
  244. }   
  245.     </style>   
  246.   <title>留言本</title>   
  247.   <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   
  248.   <meta name="description" content="留言本">   
  249.   <link href="img/1/jd100.css" rel="stylesheet" type="text/css">   
  250.      <style type="text/css">   
  251. <!--   
  252. .style12 {color: #000000; font-size: 12px; }   
  253. .style14 {color: #FF0000}   
  254. .style8 {color: #000000}   
  255. .style15 {font-size: 10px}   
  256. -->   
  257.    <form name='form' method='post' action='index.asp'  
  258.     onSubmit='submitonce(this)'>   
  259.     <table width="750">   
  260.                   <tr>   
  261.                     <td align="right"><a href="../answerBBS/TouSuAnswerBBS.jsp"><img src="../images/newtopic.gif" width="73" height="29" border="0"></a></td>   
  262.                   </tr>   
  263.                 </table>   
  264.     <table width="750" align="center">   
  265.                   <tr>   
  266.                     <td><img src="../images/kuangjia.gif" width="750" height="20"></td>   
  267.                   </tr>   
  268.               </table>   
  269.     <TABLE width='750' height=51 border=1 align=center cellPadding=3   
  270.      cellSpacing=0 class='jd_tab'  
  271.      style='border-collapse: collapse; word-wrap: break-word;'>   
  272.      <TBODY>   
  273.       <TR class=jd_titlemu>   
  274.        <TD width='5%' class='jd_tab'>   
  275.         <div align='center'>   
  276.          回复   
  277.         </div>   
  278.        </TD>   
  279.        <TD width='50%' class='jd_tab'>   
  280.         <div align='center'>   
  281.          标题   
  282.         </div>   
  283.        </TD>   
  284.        <TD width='20%' class='jd_tab'>   
  285.         <div align='center'>   
  286.          作者   
  287.         </div>   
  288.        </TD>   
  289.        <TD width='25%' class='jd_tab'>   
  290.         <div align='center'>   
  291.          时间   
  292.         </div>   
  293.        </TD>   
  294.       </TR>   
  295.       <%   
  296.    TouSuWrinkle tousuWrinkle = new TouSuWrinkle();   
  297.    int value[]=tousuWrinkle.selectAllPage("select count(*)TouSuRcount from TouSuword ",2);   
  298.    int max=value[0];   
  299.    int y=value[1];   
  300.    int Count = 0;   
  301.    if (request.getParameter("page") == null) {   
  302.   } else {   
  303.    Count = Integer.parseInt((String) request.getParameter("page"));   
  304.    }   
  305.    ArrayList<TouSuBaoGuangEntiyi> list =tousuWrinkle.select(Count);   
  306.     for (int i = 0; i < list.size(); i++) {   
  307.      TouSuBaoGuangEntiyi obj = list.get(i);   
  308.      String image=obj.getTouSutitle();   
  309. %>   
  310.       <TR class=unnamed1>   
  311.        <TD width='6%' height='25' align=middle valign='top'  
  312.         class='jd_tab'>   
  313.         <%=obj.getTouSuRcount()%>   
  314.        </TD>   
  315.        <TD width='53%' height='25' align=left valign='top'  
  316.         class='jd_tab'>   
  317.         <a href='../replyBBS/replyTouSuBBS.jsp?messageID=<%=obj.getTouSuID()%>'> <%=obj.getTouSutitle()%></a></TD>   
  318.        <TD width='20%' height='25' align=middle valign='top'  
  319.         class='jd_tab'>   
  320.         <font color=#666666><%=obj.getTouSuCreater()%> </font>   
  321.        </TD>   
  322.        <TD width='14%' height='25' align=center valign='top'  
  323.         class='jd_tab'>   
  324.         <font color=#666666><%=obj.getTouSuCreatTime() %></font>   
  325.        </TD>   
  326.       </TR>   
  327.       <%} %>   
  328.      </TBODY>   
  329.     </TABLE>   
  330.     <table width="750" align="center">   
  331.                   <tr>   
  332.                     <td><img src="../images/kuangjia.gif" width="750" height="20"></td>   
  333.                   </tr>   
  334.               </table>   
  335.     <table width="750">   
  336.                   <tr>   
  337.                     <td align="right">   
  338.            <%   
  339.       if(Count>1){   
  340.        %>   
  341.       <a   
  342.        href="TouSuBaoGuangBBS.jsp?page=<%=Count-1 %>">上一页</a>   
  343.        <%}else{ %>   
  344.        <a href="../forumBBS/TouSuBaoGuangBBS.jsp?page=0">上一页</a>   
  345.        <%} %>   
  346.        |    
  347.        <%if(Count<y-1){    
  348.         %>   
  349.        <a   
  350.        href="TouSuBaoGuangBBS.jsp?page=<%=Count-1 %>">上一页</a>   
  351.        <%}else{ %>   
  352.        <a href="../forumBBS/TouSuBaoGuangBBS.jsp?page=<%=Count+1 %>">下一页</a>   
  353.        <%} %>   
  354.        </td>   
  355.       </tr>   
  356.     </table>   
  357.   </body>   
  358. </html>   
  359. 蓝色的都是我觉得出错的地方,出错状态,查询出值来以后以排序点下页,值不变,关键就是在查出数据的方法的SQL语句后面加这段ORDER BY TouSuRcount DESC使它降序   
  360.   
  361.   
  362.   
  363. 而降序后我点下一页就出毛病了,请高手们帮帮我解决这个问题让他能降序点下一页或上一页都能实现功能   
  364.   
  365.   
  366.   
  367. 数据库名:shout   表名:TouSuword   
  368.   
  369.   
  370.   
  371. 表里面的字段为:   
  372.   
  373.                     类型   
  374.   
  375. TouSuID           int主建,自动增长   
  376.   
  377. TouSuCreater    varchar   
  378.   
  379. TouSuCreatTime   varchar   
  380.   
  381. TouSutitle     varchar   
  382.   
  383. TouSucontent    varchar   
  384.   
  385. TouSuRcount     int  
  386.   
  387. TouSuNumber     int  
  388.   
  389. TouSuPhone     char  
  390.   
  391. TouSuAddress    varchar  



主题:Re:谁来帮我看看
主要是你的这句话错了,我猜count就是你的页数吧。
String sqlstr = "SELECT top 5 * FROM TouSuword where TouSuID not in (SELECT TOP "+ Count * 5 + " TouSuID from TouSuword)ORDER BY TouSuRcount DESC";
你这句话的执行顺序是
1:先把数据集合降序排列。2:取出不在数据集合“(SELECT TOP "+ Count * 5 + " TouSuID from TouSuword)”里的前五条。
所以说存在两个数据集合,一个是排序的(源数据集),一个是不排序的(条件数据集合)。所以说你基本上永远都是取的前五条数据,因为过滤数据集合其实不是你想的过滤前面的Count * 5条记录。
 
画个图你就明白了(懒的画),你再想想为什么不能分页,相信我你仔细研究这句话的意思!我是老程序员了!



主题:Re:谁来帮我看看
还是不太明白
我是新手



主题:Re:谁来帮我看看
我想应该是先把数据降序存在一个集合里,然后在从集合里取出来



主题:Re:谁来帮我看看
阿龙,我实在想不到怎么做了
我换了一种方法做,用Servlse来实现的
  1. package Servlse;   
  2.   
  3. import java.io.IOException;   
  4. import java.util.ArrayList;   
  5. import javax.servlet.ServletException;   
  6. import javax.servlet.http.HttpServlet;   
  7. import javax.servlet.http.HttpServletRequest;   
  8. import javax.servlet.http.HttpServletResponse;   
  9. import javax.servlet.http.HttpSession;   
  10. import connDB.Connbbs;   
  11.   
  12. public class BaoGuangTaiForum extends HttpServlet {   
  13.   
  14.     public BaoGuangTaiForum() {   
  15.         super();   
  16.     }   
  17.   
  18.     public void destroy() {   
  19.         super.destroy();   
  20.     }   
  21.   
  22.     public void doGet(HttpServletRequest request, HttpServletResponse response)   
  23.             throws ServletException, IOException {   
  24.   
  25.         doPost(request, response);   
  26.     }   
  27.   
  28.     public void doPost(HttpServletRequest request, HttpServletResponse response)   
  29.             throws ServletException, IOException {   
  30.   
  31.         HttpSession session = request.getSession();   
  32.         Connbbs db = new Connbbs();   
  33.         ArrayList list = null;   
  34.         // 取得页面分页数量//前台分页商品展示;   
  35.         int page = 0;   
  36.         if (request.getParameter("page") != null) {   
  37.             page = Integer.parseInt(request.getParameter("page"));   
  38.         }   
  39.         session.setAttribute("page", page);   
  40.         // 获得总页数   
  41.         ArrayList listCount = db.selectAll("select TouSuID from TouSuword",   
  42.                 null);   
  43.         int pageCount = 0;   
  44.         if (listCount.size() % 5 == 0) {   
  45.             pageCount = listCount.size() / 5 - 1;   
  46.         } else {   
  47.             pageCount = (listCount.size() / 5);   
  48.         }   
  49.         session.setAttribute("pageCount", pageCount);   
  50.         // 启动的查询   
  51.         if (session.getAttribute("page") == null) {   
  52.             session.setAttribute("page", 0);   
  53.             String strSqql = "SELECT TOP 5 * FROM TouSuword WHERE  TouSuID NOT IN("  
  54.                     + " SELECT TOP 5 TouSuID FROM TouSuword order by touSuRcount desc) order by touSuRcount desc";   
  55.             //order by touSuRcount desc;   
  56.             list = db.selectAll(strSqql, null);   
  57.             session.setAttribute("list", list);   
  58.         } else {   
  59.             String strSqql = "SELECT TOP 5 * FROM TouSuword WHERE  TouSuID NOT IN( SELECT TOP "  
  60.                     + page   
  61.                     * 5   
  62.                     + " TouSuID FROM TouSuword order by touSuRcount desc) order by touSuRcount desc";   
  63.             list = db.selectAll(strSqql, null);   
  64.             session.setAttribute("list", list);   
  65.         }   
  66.         response.sendRedirect("forumBBS/TaiForumBBS.jsp");   
  67.     }   
  68.   
  69.     public void init() throws ServletException {   
  70.     }   
  71. }  
但是我还是想让你把我原来的方法改进下发给我看


主题:Re:谁来帮我看看
  1. 在看你这句话servlet这句话:String strSqql = "SELECT TOP 5 * FROM TouSuword WHERE  TouSuID NOT IN("  
  2.                     + " SELECT TOP 5 TouSuID FROM TouSuword order by touSuRcount desc) order by touSuRcount desc"
  3. 因为你的你的数据集合和过滤集合都加了排序,所以你应该可以取到正确的结果... ... 我够耐心的了,老大你在开发程序,sql语句看不懂吗?
  4. 一定是你没有静心。早上我给你的那段话你改作下面的就可以了
  5. String sqlstr = "SELECT top 5 * FROM TouSuword where TouSuID not in (SELECT TOP "+ Count * 5 + " TouSuID from TouSuword order by touSuRcount desc)ORDER BY TouSuRcount DESC";



主题:Re:谁来帮我看看
龙哥我才学了半个月啊



 
tomcat自动加载修改过的类
西联取款时GG公司电话的填写
log4j.properties 的路径配置
struts资源文件的配置,struts多国语言资源文件配置
eclipse 插件的安装步骤
spring的AOP是什么?spring AOP 我的理解
SyntaxHighlighter 效率慢
jsp 获取域名
struts form的编码格式
java String 引用
HTML enctype含义
web开发网(http://www.webkaifa.com)寻求与大家合作!任何形式的合作
网页设计群 49883090 欢迎大家进来学习 交流
jsp QQ群!
一篇相当不错的jQuery中文参考手册,中文学习教程
jQuery对象和Dom对象的区别
document.all.tags 兼容firefox
JQuery 是什么? jQuery是什么技术?
jQuery与prototype不兼容
今天终于完成了主动提交网页给搜索引擎功能!