时间:2021-07-01 10:21:17 帮助过:14人阅读
2.Orcale数据库
首先说一下:在Oracle中用于分页显示的sql语句关键词:rownum。
可能都知道rownum只适用于小于或小于等于,如果进行等于判断,那么只能等于1,不能进行大于的比较。
rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推。
rownum总是从1开始,不管当前的记录是否满足查询结果,rownum返回的值都是1,如果这条记录的值最终满足所有的条件,那么rownum会递加,下一条记录的rownum会返回2,否则下一条记录的rownum仍然返回1。
理解了这一点,就清楚为什么一般的rownum大于某个值或等于某个不为1的值是无法返回结果的,因此对于每条记录的rownum都是1,而rownum为1不满足查询的结果,所以下一条记录的rownum不会递增,仍然是1,因此所有的记录都不满足条件。
简单例子:select * from student rownum<=4
那么就表示显示student中的返回编号小于等于4的行;
简单sql语句:
pagenum:是当前页数; pagesize:是每页的行数;
select * from (select a.*, rownum ro from (select * from COUSER) a) where ro between (pagenum-1)*pagesize+1 and (pagenum-1)*pagesize+pagesize
实例:
package com.inba.maya.Dao; import java.util.*; import java.sql.*; public class DBConnection { //oracle加载驱动 public static String qd="oracle.jdbc.driver.OracleDriver"; //oracle链接数据库 public static String url="jdbc:oracle:thin:@localhost:1521:ORCL"; public static String user="gmh"; public static String password="602477126"; public static Connection GetConnection() throws Exception{ Class.forName(qd); Connection conn=DriverManager.getConnection(url, user, password); return conn; } }
package com.inba.maya.Dao; import java.util.*; import java.sql.*; import com.inba.maya.Dao.*; import com.inba.maya.page.*; public class CouserDao { private Connection conn; private PreparedStatement ps; private ResultSet rs; public CouserDao() throws Exception{ conn=DBConnection.GetConnection(); } public int GetPage(int pagesize) throws Exception{ String sql="select count(*) from COUSER"; ps=conn.prepareStatement(sql); rs=ps.executeQuery(); rs.next(); int page=(int)Math.ceil(1.0*rs.getInt(1)/pagesize); return page; } public ArrayList<Couser> Select(int pagesize, int pagenum) throws SQLException{ ArrayList<Couser> list=new ArrayList<Couser>(); //oracle的分页语句 String sql="select * from (select a.*, rownum ro from (select * from COUSER) a) where ro between ? and ?"; ps=conn.prepareStatement(sql); ps.setInt(1, (pagenum-1)*pagesize+1); ps.setInt(2, (pagenum-1)*pagesize+pagesize); rs=ps.executeQuery(); while(rs.next()){ Couser f=new Couser(); f.setCon(rs.getString(1)); f.setCname(rs.getString(2)); f.setTon(rs.getString(3)); list.add(f); } return list; } }
在链接各类数据库中,不一样的无非,加载驱动、连接数据库、sql语句的不同。
3.sqlserver语句实现分页:
select top 10 * from 表名 where not in (select top 20 * from 表名 )
由于电脑中没有装载sqlserver,所有就不演示了。
其实对于数据库的操作,大都大同小异,无非就是加载驱动包、连接数据库、sql语句不同
常用数据库中,实现分页功能的查询语句;
标签:连接数据库 ges count exception sel manage math java 编号