数据库端分页的写法(即所谓的真分页)

来源:互联网 发布:弗洛伊德算法 编辑:程序博客网 时间:2024/06/06 20:01

最近在写代码的时候有很多的时候遇到和数据查询相关的知识,然后就稍微总结了一下关于数据库端分页(真分页)的模板,希望对大家有所帮助吧:

首先,现在常用的数据库有三种(SQLSever)、Oracle、和MySQL,那么我们就按照这三种数据库书写分页的模板:


一、SQLSever:  select top(页面显示的信息数目)  列,列  from 表名  where   条件(select  top(页面大小*(索引页-1))  索引列名   from   表名)::注意此处的索引列必须是非空的唯一列;



二、Oracle:select   列名,列名 from (select  rownum    任意别名(r),表名.*  from   表  where  rownum<=最大行数 ) where  r>起始页;




三、MySQL: select  列名,列名 from 表 limit  起始页,页大小:::注意,此处的起始页不被包含(即如果你写的起始页为1,那么会从第二页开始显示)



插播别的消息:::(简单整理了一下,在java中连接数据库的连接的写法)

ava连接数据库(jdbc的方式)的通用公式。

第一步,先导入对应数据库的jar包;

第二步,新建一个包dao,然后在dao包下建立一个类BaseDAO(包名和类名都是可变的,用者可以自定义);

第三步,开始书写java连接数据库的语句

①加载数据库驱动(即Class.fromName(DriverName);→String DriverName="a" (a的值随数据库的不同有不同的写法,例如mysql数据库的写法为:“com.mysql.jdbc.Driver”);sqlserver的写法为:"com.microsoft.jdbc.sqlserver.SQLServerDriver";Oracle的写法为:”oracle.jdbc.driver.OracleDriver“);

②建立连接对象:Connection con =new Connection();  

③获得连接对象库驱动:con=DriverManager.getConnection(url,sqlname,sqlpassword);

(其中url和sqlname和sqlpassword有不同的写法:

mysql的写法:”jdbc:mysql://localhost:3306/数据库名“  sqlname="数据库用户名"  sqlpassword=”数据库用户对象“;

sqlserver的写法:url=”jdbc:microsoftsqlserver://localhost:1433;DatabaseName="数据库名称"“  sqlname="数据库用户名"  sqlpassword=”数据库用户对象“

Oracle的写法:”jdbc:oracle:thin:@localhost:1521:数据库名称“        sqlname="数据库用户名"  sqlpassword=”数据库用户对象“

④创建查询语句:PreparedStatement ps=con.preparestatement("需要执行的sql语句");

⑤创建查询结果集:ResultSet rs=ps.executequery();


以oracle为例的书写样例代码:

创建数据库连接对象:

public class BaseDAO {public Connection getCon(){Connection con=null;try {Class.forName("oracle.jdbc.OracleDriver");con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:neuedu","scott","123");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return con;}
使用数据库连接对象来完成对数据库的操作:
public class MessageDAOImpl extends BaseDAO{Connection con=null;PreparedStatement ps=null;ResultSet rs=null;//实现保存一条数据public int save(Message message){int result=0;con=getCon();String sql="insert into Message values(?,?,to_date(?,'yyyy-mm-dd,hh24:mi:ss'))";try {ps=con.prepareStatement(sql);ps.setString(1,message.getMessage());ps.setString(2, message.getAuthor());ps.setString(3,message.getPostTime());rs=ps.executeQuery();if(rs.next()){result=1;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{closeAll(con,ps,rs);}return result;}

其中closeAll()方法为一个关闭数据库连接的方法,其中是用了con.close() and rs.close() and ps.close() 三个关闭方法。


0 0
原创粉丝点击