分页查询MsSQL数据库中的数据
2018-03-15 19:24
162 查看
查询MySQL数据库中数据时,数据量都比较大,此时需要分页显示。
分页需要的四个重要数据:
1.每页显示数据量:pageSize;
2.总数据量total,用count(*)方法获取;
3.总页数pageCount。获取方式:1、total%pageSize==0?total/pageSize:total/pageSize+1;2、pageCount = (int)Math.ceil(total*1.0/pageSize)
Math类中的向上取整方法 static double ceil(double a) ,Math.ceil(total*1.0/pageSize) 参数类型为double,所以total*1.0转型为double,然后(int)强转再赋值给pageCount。
4.页码 pageNo
获取每页显示的数据 select * from 表名 limit (pageNo-1)*pageSize,pageSize
limit x,y x:开始的下标,y:数量,第一页从0开始,显示pageSize条。
分页需要的四个重要数据:
1.每页显示数据量:pageSize;
2.总数据量total,用count(*)方法获取;
3.总页数pageCount。获取方式:1、total%pageSize==0?total/pageSize:total/pageSize+1;2、pageCount = (int)Math.ceil(total*1.0/pageSize)
Math类中的向上取整方法 static double ceil(double a) ,Math.ceil(total*1.0/pageSize) 参数类型为double,所以total*1.0转型为double,然后(int)强转再赋值给pageCount。
4.页码 pageNo
获取每页显示的数据 select * from 表名 limit (pageNo-1)*pageSize,pageSize
limit x,y x:开始的下标,y:数量,第一页从0开始,显示pageSize条。
package com.qf.jdbc; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Scanner; import com.qf.bean.Emp; import com.qf.utils.DBUtils; /* * 分页显示 emp表中的数据 * 要求 * 运行开始 * 控制台 显示 页码 和 第一页的内容 * 然后 键盘录入页码 根据页码 显示不同也的内容 * 需要定义四个变量 1.pageSize 2.total 3.pageCount 4.pageNo * */ public class Demo03 { private static int pageSize = 3;//每页显示3条 private static int total; //总条数 private static int pageCount;//总页数 public static void main(String[] args) { //获取总条数 Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { //获取总条数 conn = DBUtils.getConnection(); String sql = "select count(*) from emp"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); if(rs.next()){ total = rs.getInt(1); } //根据总行数 和 每页显示条数 计算 页数 使用 ceil()方法 向上取整 pageCount = (int)Math.ceil(total*1.0/pageSize); //显示页面 System.out.println("可选的页码数"); for(int i=1;i<=pageCount;i++){ System.out.print(i + " "); } System.out.println(); //定义一个 页码变量 查询每页显示的数据 从第一页开始 int pageNo = 1; print(pageNo); //键盘录入页码 显示指定页的数据 do{ System.out.println("请输入页码::"); Scanner sc = new Scanner(System.in); pageNo = sc.nextInt(); if(pageNo <= pageCount && pageNo >0 ){ System.out.println("第"+pageNo+"页的数据有:"); print(pageNo); }else{ System.out.println("页码输入错误"); } }while(pageNo <= pageCount && pageNo >0); } catch (SQLException e) { e.printStackTrace(); } } //控制台输出该页数据 private static void print(int pageNo) { List<Emp> dataList = getDate(pageNo); Iterator<Emp> it = dataList.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } //连接数据库 根据页码 查询 当页显示的数据,创建Emp实体类,封装获取到的数据 public static List<Emp> getDate(int pageNo){ //创建list集合存储数据 List<Emp> list = new ArrayList<>(); try { //连接数据库,获取其中数据 Connection conn = DBUtils.getConnection(); String sql = "select * from emp limit ?,?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, (pageNo-1)*pageSize); pstmt.setInt(2, pageSize); ResultSet rs = pstmt.executeQuery(); while(rs.next()){ Emp emp = new Emp(); emp.setEmpno(rs.getInt(1)); emp.setEname(rs.getString(2)); emp.setJob(rs.getString("job")); emp.setHiredate(rs.getDate("hiredate")); emp.setSal(rs.getDouble("sal")); list.add(emp); } } catch (SQLException e) { e.printStackTrace(); } return list; } }创建Emp实体类
package com.qf.bean; import java.util.Date; public class Emp { private int empno; private String ename; private String job; private int mgr; private Date hiredate; private double sal; private double comm; private int deptno; public int getEmpno() { return empno; } public void setEmpno(int empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public int getMgr() { return mgr; } public void setMgr(int mgr) { this.mgr = mgr; } public Date getHiredate() { return hiredate; } public void setHiredate(Date hiredate) { this.hiredate = hiredate; } public double getSal() { return sal; } public void setSal(double sal) { this.sal = sal; } public double getComm() { return comm; } public void setComm(double comm) { this.comm = comm; } public int getDeptno() { return deptno; } public void setDeptno(int deptno) { this.deptno = deptno; } @Override public String toString() { return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + ", mgr=" + mgr + ", hiredate=" + hiredate + ", sal=" + sal + ", comm=" + comm + ", deptno=" + deptno + "]"; } }
相关文章推荐
- 大数据表查询或者分页
- Oracle分页查询排序数据重复问题
- -分页数据查询:
- Thinkphp 带查询条件数据分页
- YII2-数据库数据查询方法,关联查询with, joinWith区别和分页
- ADODB数据分页查询提高数据显示速度
- mysql数据库千万级别数据的查询优化和分页测试
- mysql排序不稳定,分页查询数据有重复和遗漏
- Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
- 2.非关系型数据库(Nosql)之mongodb:mongodb显示所有数据库,使用数据库,集合创建(显示和隐式创建),集合查询,初步数据的增删改查,分页
- php -- php读取sqlserver2005的数据实现分页查询
- 实现分页显示数据[并按关键字查询]
- mysql数据库千万级别数据的查询优化和分页测试
- 对查询得到的List数据,进行分页操作
- T-SQL 随机返回特定行数据和分页查询
- oracle分页查询从结果集取数据不稳定解决办法
- 根据时间排序分页查询导致部分数据丢失原因
- 数据量大的SQL分页查询优化
- JQueryEasyUI-DataGrid显示数据,条件查询,排序及分页
- JDBC在javaweb中的应用之分页数据查询