每翻一页,都去数据库中查一次。这种分页效果用java怎么写?
4个回答
2013-07-14
展开全部
在用jdbc访问某个数据库,并读出一个resultset数据记录集时,如果记录数太大,则会占用客户端(运行java程式的机器)的大量内存(如果客户端是某个大企业的营业部门的代理点分机,则有可能java程式会占用完全部内存,然后报错),并且会造成客户端负载过重,运行速度极度缓慢(在sybase数据库中,我曾做过一个测试。选择某个大数据记录,sql语句运行完需要4分钟,而在java客户端完全显示出来,则需要将近10分钟)。 解决方案:
给用户提供一个可选择分页显示的选项,如果用户不想分页显示则完全显示,否则分页显示。
1.定义一个分页数全局常量,即每页显示的数据条数。
private final static int skip = 100;
2.定义一个确定某个分页条数的全局变量,即该显示页的当前显示数据条数。
private static int cur = 0;
3.定义一个resultset全局变量,以便多次使用
private static java.sql.result rs = null;
4.打开一个数据库连接[/pre]
class.forname( sqldriver ); java.sql.connection conn = drivermanager.getconnection( url, (string)username,(string)passwd) statement stmt = conn.createstatement(); string searchsql = "......"; rs = stmt.executequery(searchsql);
给用户提供一个可选择分页显示的选项,如果用户不想分页显示则完全显示,否则分页显示。
1.定义一个分页数全局常量,即每页显示的数据条数。
private final static int skip = 100;
2.定义一个确定某个分页条数的全局变量,即该显示页的当前显示数据条数。
private static int cur = 0;
3.定义一个resultset全局变量,以便多次使用
private static java.sql.result rs = null;
4.打开一个数据库连接[/pre]
class.forname( sqldriver ); java.sql.connection conn = drivermanager.getconnection( url, (string)username,(string)passwd) statement stmt = conn.createstatement(); string searchsql = "......"; rs = stmt.executequery(searchsql);
2013-07-14
展开全部
数据量较大的时候不能用全部查出的方法,只能分次进行查询。
每次点击翻页,都会传出一个当前页码的变量。然后服务代码接收到这个变量以后,配合上每页显示的记录数去数据库里进行限定位置的查询。
SELECT * from table WHERE ROWNUM>curr*size ROWNUM<=(curr-1)*size
curr代表当前页码变量,size代表每页显示条数。
每次点击翻页,都会传出一个当前页码的变量。然后服务代码接收到这个变量以后,配合上每页显示的记录数去数据库里进行限定位置的查询。
SELECT * from table WHERE ROWNUM>curr*size ROWNUM<=(curr-1)*size
curr代表当前页码变量,size代表每页显示条数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-14
展开全部
翻页功能可以直接用sql存储过程完成(比如一页显示5行数据)
create proc proc_fanye
@id int,
@page int
as
select top(5) *from tabelName where id not in (select top(5*(@page-1)) *from tabelName where id=@id)
proc_fanye 1,1 (查询id=1的 第一页)
proc_fanye 1,2 (查询id=1的 第二页)
·······
create proc proc_fanye
@id int,
@page int
as
select top(5) *from tabelName where id not in (select top(5*(@page-1)) *from tabelName where id=@id)
proc_fanye 1,1 (查询id=1的 第一页)
proc_fanye 1,2 (查询id=1的 第二页)
·······
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-14
展开全部
不知道你说的是什么数据库
列举几种数据库,
你只需要根据SQL来传参数就好了
1. ORACLE
SELECT * FROM TABLE1 WHERE ROWNUM<=N
2. DB2
SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM<=N
或者
SELECT COLUMN FROM TABLE FETCH FIRST N ROWS ONLY
3. INFORMIX
SELECT FIRST N * FROM TABLE1
4. SQL SERVER
SELECT TOP N * FROM TABLE1
5. SYBASE
SET ROWCOUNT N
GO
SELECT * FROM TABLE1
6. MYSQL
SELECT * FROM TABLE1 LIMIT N
7. FOXPRO
SELECT * TOP N FROM TABLE ORDER BY COLUMN
列举几种数据库,
你只需要根据SQL来传参数就好了
1. ORACLE
SELECT * FROM TABLE1 WHERE ROWNUM<=N
2. DB2
SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM<=N
或者
SELECT COLUMN FROM TABLE FETCH FIRST N ROWS ONLY
3. INFORMIX
SELECT FIRST N * FROM TABLE1
4. SQL SERVER
SELECT TOP N * FROM TABLE1
5. SYBASE
SET ROWCOUNT N
GO
SELECT * FROM TABLE1
6. MYSQL
SELECT * FROM TABLE1 LIMIT N
7. FOXPRO
SELECT * TOP N FROM TABLE ORDER BY COLUMN
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |