qq_44891745 2020-11-07 19:59 采纳率: 0%
浏览 15

怎么对查询的结果进行分页啊,最好是真分页,我把代码给拷过来了,哪个大佬帮忙看一下

<body>

    <center>
        <form action="" method="post">
                      请输入查询关键字:<input type="text" name="keyword">
            <input type="submit" value="查询">
        </form>
        <table border="1" cellspacing="0">
            <tr>
                <td>雇员编号</td>
                <td>雇员姓名</td>
                <td>雇员工作</td>
                <td>雇佣日期</td>
                <td>雇员工资</td>
            </tr>
<%
   
%>
<%
    try {
        String keyWord = request.getParameter("keyword");
        if (keyWord != null) {
     //   List<Emp> all = EmpDao.doFind(keyWord);   //取得查询数据
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        

        conn = DBUtil.getConnection();          //连接数据库

        
        List<Emp> all = new ArrayList<Emp>();       //定义一个集合all
        String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE ename LIKE ? OR job LIKE ?";
        stmt = conn.prepareStatement(sql);
        stmt.setString(1, "%" + keyWord + "%");
        stmt.setString(2, "%" + keyWord + "%");
        
        rs = stmt.executeQuery();
        Emp emp = null;
        while (rs.next()) {
            emp = new Emp();
            emp.setEmpno(rs.getInt(1));
            emp.setEname(rs.getString(2));
            emp.setJob(rs.getString(3));
            emp.setHiredate(rs.getDate(4));
            emp.setSal(rs.getFloat(5));
            all.add(emp);
        }
        DBUtil.close(rs, stmt, conn);       
        Iterator<Emp> iter = all.iterator();
        while (iter.hasNext()) {
            Emp emp1 = iter.next();
%>
            <tr>
                <td><%=emp1.getEmpno() %></td>
                <td><%=emp1.getEname() %></td>
                <td><%=emp1.getJob() %></td>
                <td><%=emp1.getHiredate() %></td>
                <td><%=emp1.getSal() %></td>
            </tr>
<% 
        }
        }
%>
        </table>
     
    </center>
<%
    }catch(Exception e) {
        e.printStackTrace();
    }finally {

    }
%>
</body>

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 00:10
    关注

    针对分页的问题,可以通过使用SQL语句中的LIMIT和OFFSET来实现。具体的实现方法如下:

    1. 首先,在代码中添加两个参数,分别表示当前页码和每一页显示的数据数量。

    int currentPage = Integer.parseInt(request.getParameter("currentPage"));

    int pageSize = Integer.parseInt(request.getParameter("pageSize"));

    1. 在查询语句中,添加LIMIT和OFFSET参数。

    String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE ename LIKE ? OR job LIKE ? LIMIT ? OFFSET ?";

    stmt = conn.prepareStatement(sql);

    stmt.setString(1, "%" + keyWord + "%");

    stmt.setString(2, "%" + keyWord + "%");

    stmt.setInt(3, pageSize);

    stmt.setInt(4, (currentPage - 1) * pageSize);

    1. 将查询结果进行分页显示,可以使用Java中的ArrayList和subList方法。

    Iterator iter = all.subList((currentPage - 1) * pageSize, Math.min(currentPage * pageSize, all.size())).iterator();

    while (iter.hasNext()) {

    Emp emp1 = iter.next();  
    
    %>  
    
    <tr>  
    
        <td><%=emp1.getEmpno() %></td>  
    
        <td><%=emp1.getEname() %></td>  
    
        <td><%=emp1.getJob() %></td>  
    
        <td><%=emp1.getHiredate() %></td>  
    
        <td><%=emp1.getSal() %></td>  
    
    </tr>  
    
    <%  
    

    }

    通过以上的方法,我们就可以实现对查询结果的真实分页了。

    评论

报告相同问题?

悬赏问题

  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀