关于JDBC数据分页跨数据库小结_数据库连接与分页汇总

2020-02-28 其他工作总结 下载本文

关于JDBC数据分页跨数据库小结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据库连接与分页汇总”。

关于JDBC数据分页跨数据库小结

一、关于数据连接connection如何区分数据库类型

// 获取数据生产商名称

String databaseProductName = conn.getMetaData().getDatabaseProductName();// 获取数据库版本号

String productVersion = conn.getMetaData().getDatabaseProductVersion();

测试结果:

Oracle // // //

databaseProductName :Oracle

productVersion :Oracle Database 10g Enterprise Edition Release 10.2.0.1.01)* page.getPageSize();int endRow = startRow + page.getPageSize();String osql = “select * from(select t.*,rownum as rn from(”

+ sql+ “)t where rownum” + startRow;

} return osql;

三、MYSQL数据库分页方案采用 limit 关键字

1.SQL语句:

select trty.* from(select * from table)trty limit startrow ,endrow

2.生成分页SQL代码:

/**

* MySql数据库分页专用

* @param sql

* @param page

* @return String

* @see 未测试

*/

private static String wrapPage4MySql(String sql, Page page){

int startRow =(page.getPageNo()1)* page.getPageSize();int endRow = page.getPageNo()* page.getPageSize();Statement statement = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

ResultSet rs = statement.executeQuery(sql);

// 查询范围超过,返回空rows rs.last();int rownum = rs.getRow();if((startRow+1)> rownum){ }

// 判断分页总数是否超过实际数量 int startnum = startRow + 1;int endnum = endRow + 1;if(rownum

rs.absolute(startnum);while(startnum

} } return rows;

五、Microsoft SQL Server数据库分页方案探索

1.方案一 采用top关键字

SQL语句:

SELECT TOP 10 * FROM TestTable WHERE ID NOT IN

(SELECT TOP 20 id FROM TestTable ORDER BY ID)ORDER BY ID

2.方案二 用top关键字

SELECT TOP 10 * FROM TestTable WHERE ID >

(SELECT MAX(id)FROM(SELECT TOP 20 id FROM TestTable ORDER BY id)AS T)ORDER BY ID

3.方案一和二本质一样,但是方案二的效率比较高。对于复杂的SQL不能采用此中分页方式,除非有逻辑严谨的拆解SQL语句的程序。

4.方案三采用存储过程分页,在JAVA程序中调用存储过程。

1)存储过程代码如下

IF NOT EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Pr_QueryByPage]')AND OBJECTPROPERTY(id,N'IsProcedure')= 1)BEGIN

EXEC dbo.sp_executesql @statement = N'create procedure [dbo].[Pr_QueryByPage]

@sqlstr nvarchar(4000),--查询sql @currentpage int,--第页记录条数 @pagesize int--每页显示记录

as

set nocount on

declare @P1 int,--P1是游标的ID @rowcount int

exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output

select ceiling(1.0*@rowcount/@pagesize)as TotalPage,@rowcount as [RowCount]

set @currentpage=(@currentpage-1)*@pagesize+1 exec sp_cursorfetch @P1,16,@currentpage,@pagesize exec sp_cursorclose @P1 set nocount off ' END GO

2)代码调用

/**

List> rows = * Microsoft SQL Server 2000分页专用

*

* @param conn

* @param sql

* @param page

* @return

* @throws Exception

* @see 测试通过

*/

private static List> wrapPage4SQLServer2000(Connection conn, String sql, Page page)throws Exception { new ArrayList>();

// 设置存储过程参数

cs.setString(1, sql);cs.setInt(2, pageno);cs.setInt(3, pagsize);cs.execute();boolean hasResultSet = cs.execute();if(hasResultSet){

} return rows;} ResultSet rs = null;/** 跳过第一个结果集 */ rs = cs.getResultSet();/** 第二个结果集为查询分页数据 */ if(cs.getMoreResults()){

} rs = cs.getResultSet();while(rs.next()){ } rows.add(buildOneRow(rs));// 调用存储过程分页

CallableStatement cs = conn.prepareCall(“{call Pr_QueryByPage(?,?,?)}”);int pageno = page.getPageNo();int pagsize = page.getPageSize();5.关于SQLSERVER2005分页方案的选择

1)2005分页方案可以采用存储过程,和2000的方案兼容。2)2005第二种分页方案采用RowNumber()函数可以实现。

SQL实例:

SELECT * FROM(SELECT

ROW_NUMBER()OVER(ORDER BY Namec)AS RowNumber, FROM

dbo.mem_member)_myResults WHERE

RowNumber between 10000 and 10020 缺点:此种方案关键函数 ROW_NUMBER()必须进行order by排序。如果采用此种方案必须拆分SQL语句。

JDBC连接数据库经验总结

Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个......

JDBC方式连接数据库心得体会

1、在新建好的数据库中建立一张名字为UserTable的数据表,定义好各个字段的数据类型和主键。 表的设计结构如下:(仅作测试使用) UserTable:其中UserId为主键。2、在表中写入适当的......

数据库小结

数据库总结1、数据库开课6天,到今天已全部结束2、学习内容一、数据库的安装与删除:已独立上机操作实现。二、数据利器sql 1)用sql进行单表查询:查询语句: select 所查内容 from......

操作数据库小结

一.查询操作对数据进行查询操作时,有两种情况:一是查询单个值,二是 查询若干条记录。1、查询单个值需要使用Command对象的ExecuteScalar()方法:步骤如下: (1)、创建Connection对象(数据......

数据库问题小结

学习小结 1.前言:前段时间的学习一直都没有融入实际的操作,因此这个阶段的学习我想结合着数据库来对配置数据进行一个定位。为了达到这个目的我就决定再我自己机子上安装oracl......

《关于JDBC数据分页跨数据库小结.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
关于JDBC数据分页跨数据库小结
点击下载文档
相关专题 数据库连接与分页汇总 分页 小结 数据库 数据库连接与分页汇总 分页 小结 数据库
[其他工作总结]相关推荐
[其他工作总结]热门文章
下载全文