数据库分页技术
1.sql server分页是使用top来分页的,下面是是代码
public class SysAdminDao { public static final String SEARCHSQLPageall = "select" + ENTER + " count(*) " + ENTER + "from " + ENTER + " administrator" + ENTER + "where " + ENTER + " deleteFlg = 1"; public static final String SEARCHSQLFenye = "select" + ENTER ;
public int pageall(int pageno){ ResultSet rs = DBmanager.executeQuery(SEARCHSQLPageall); int pageall=0; int allinfo=0; try { while(rs.next()) { allinfo = rs.getInt(1); } } catch (SQLException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } if((allinfo%pageno)==0){ pageall = (allinfo/pageno); }else{ pageall = (allinfo/pageno)+1; } return pageall; };
public ArrayList<SysAdmin> findAllFenye(int nowpage, int pageno) { StringBuilder sql = new StringBuilder(SEARCHSQLFenye); sql.append(" top " + pageno); sql.append(" admin_ID,admin_Name"+ ENTER ) ; sql.append(" from administrator"+ ENTER ) ; sql.append(" where deleteFlg = 1"+ ENTER ) ; sql.append(" and admin_ID not in"+ ENTER ) ; sql.append(" (select top"+ ENTER ) ; sql.append( pageno*(nowpage-1)+ "admin_ID from administrator where deleteFlg = 1 order by admin_ID asc)"); sql.append(" order by admin_ID asc"); ArrayList<SysAdmin> admins = new ArrayList<SysAdmin>(); ResultSet rs = DBmanager.executeQuery(sql.toString()); System.out.println(sql.toString()); try { while(rs.next()) { SysAdmin admin = new SysAdmin(); admin = new SysAdmin(); admin.setAdmin_ID(rs.getString("admin_ID")); admin.setAdmin_Name(rs.getString("admin_Name")); admins.add(admin); } } catch (SQLException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } return admins; }
2.mysql 使用limit进行分页
select * from table limit (当前页数-1)*每页显示的条数,每页显示的条数
1. select * from tablename <条件语句> limit 100,15
从100条记录后开始取15条 (实际取取的是第101-115条数据)
SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15
2. select * from tablename <条件语句> limit 100,-1
从第100条后开始到最后一条记录
3. select * from tablename <条件语句> limit 15
相当于limit 0,15 查询结果取前15条数据
3.oracle 使用rownum进行分页
select * from (select rownum r,empno,ename from emp where rownum <10) t where t.r>5