您的位置:首页 > 数据库

分页查询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条。
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 + "]";
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息