数据库端分页的写法(即所谓的真分页)
2015-09-23 10:16
417 查看
最近在写代码的时候有很多的时候遇到和数据查询相关的知识,然后就稍微总结了一下关于数据库端分页(真分页)的模板,希望对大家有所帮助吧:
首先,现在常用的数据库有三种(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为例的书写样例代码:
创建数据库连接对象:
其中closeAll()方法为一个关闭数据库连接的方法,其中是用了con.close() and rs.close() and ps.close() 三个关闭方法。
首先,现在常用的数据库有三种(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 block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.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 block e.printStackTrace(); } finally{ closeAll(con,ps,rs); } return result; }
其中closeAll()方法为一个关闭数据库连接的方法,其中是用了con.close() and rs.close() and ps.close() 三个关闭方法。
相关文章推荐
- mysql中主外键关系
- spinner(SimpleCursorAdapter)数据库查询、获取所选中的值
- JDBC(用Eclipse操作数据库Oracle)的基础操作集合
- mysql 交互式连接和非交互式连接
- Oracle 索引出现坏块处理
- mysql wait_timeout和interactive_timeout总结
- Oracle数据库表空间删除与重建
- golang redis连接池
- 查询oracle表的信息(表,字段,约束,索引)
- 从数据库内部表中查询得到ORACLE_BASE变量值
- MongoDB学习9_【MongoDB for Java】Java操作MongoDB
- Oracle10g数据库用户创建及数据导入导出操作
- oracle创建表索引
- mysql 超时设置
- mysql:Lock wait timeout exceeded,try restarting transaction
- ORACLE 根据上表不同的字段值的统计
- MySQL添加用户、删除用户与授权
- Ubuntu mysql 彻底卸载重装
- mongodb 服务安装和删除
- c3p0数据库连接池死锁问题