加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

用"SELECT TOP"实现分页

发布时间:2020-12-12 15:42:46 所属栏目:MsSql教程 来源:网络整理
导读:import ?java.sql. * ; import ?java.util. * ; public ? class ?GetPage? ... { ?? private ? int ?pageSize? = ? 6 ;? // 每一页显示的记录数 ?? private ? int ?pageCount? = ? 1 ;? // 总的页数 ?? private ? int ?currentPage? = ? 1 ;? // 当前显示的

import?java.sql.*;

import?java.util.*;

public?class?GetPage?{

??private?int?pageSize?=?6;?//每一页显示的记录数

??private?int?pageCount?=?1;?//总的页数

??private?int?currentPage?=?1;?//当前显示的页

??
//"showVar"?值为"-1"表示显示最后页,为"-2"表示显示上一页,为"-3"表示显示下一页,否则显示当前页。

??public?Vector<Vector>?doGet(int?showVar)?{

????Vector
<Vector>?all?=?new?Vector<Vector>?();?//当前页的记录集

????Statement?stmt?=?null;

????ResultSet?rs?
=?null;

????Connection?con?
=?null;


????
try?{

??????Class.forName(
"com.microsoft.jdbc.sqlserver.SQLServerDriver");?//定义数据库驱动

??????String?url?=

??????????
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=lesson";?//连接数据库"lesson"

??????String?user?=?"sa";?//用户名

??????String?password?=?"123";?//密码

??????con?=?DriverManager.getConnection(url,?user,?password);?//连接

??????stmt?=?con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

?????????????????????????????????ResultSet.CONCUR_UPDATABLE);

??????String?sql?
=?"SELECT?COUNT(*)?FROM?test";?//获取纪录总条数

??????rs?=?stmt.executeQuery(sql);

??????rs.next();

??????
int?allRows?=?rs.getInt(1);

??????pageCount?
=?(allRows?%?pageSize?==?0)???(allRows?/?pageSize)?:

??????????(allRows?
/?pageSize?+?1);

??????
if?(pageCount?==?0)?{

????????pageCount?
=?1;

??????}

??????
switch?(showVar)?{

????????
case?-1:

??????????currentPage?
=?pageCount;

??????????
break;

????????
case?-2:

??????????currentPage?
=?(currentPage?>?1)???(currentPage?-?1)?:?1;

??????????
break;

????????
case?-3:

??????????currentPage?
=?(currentPage?<?pageCount)???(currentPage?+?1)?:

??????????????pageCount;

??????????
break;

????????
default:

??????????
if?(showVar?>?0?&&?showVar?<=?pageCount)?{

????????????currentPage?
=?showVar;

??????????}

??????}

??????
//****************从数据库中读取当前页的数据***********

??????if?(currentPage?==?1)?{

????????sql?
=?"SELECT?TOP?"?+?pageSize?+

????????????
"?*?FROM?test?ORDER?BY?ID";

??????}

??????
else?{

????????sql?
=?"SELECT?TOP?"?+?pageSize?+

????????????
"?*?FROM?test?WHERE(ID?>(SELECT?MAX(id)?FROM(SELECT?TOP?"?+

????????????pageSize?
*?(currentPage?-?1)?+

????????????
"?id?FROM?test?ORDER?BY?id)?AS?T))?ORDER?BY?ID";

??????}

??????rs?
=?stmt.executeQuery(sql);

??????
//*************************************************

??????
//****************获取当前页的数据*******************

???????Vector<Integer>?id?=?new?Vector<Integer>?();

??????Vector
<String>?zhuti?=?new?Vector<String>?();

??????
for?(int?i?=?0;?i?<?pageSize?&&?rs.next();?i++)?{

????????id.add(rs.getInt(
"id"));

????????zhuti.add(rs.getString(
"zhuti"));

??????}

??????all.add(id);

??????all.add(zhuti);

??????
//*************************************************


????}

????
catch?(Exception?ex)?{

??????ex.printStackTrace();

????}

????
finally?{

??????
if?(rs?!=?null)?{

????????
try?{

??????????rs.close();

????????}

????????
catch?(Exception?e)?{}

??????}

??????
if?(stmt?!=?null)?{

????????
try?{

??????????stmt.close();

????????}

????????
catch?(Exception?e)?{}

??????}

??????
if?(con?!=?null)?{

????????
try?{

??????????con.close();

????????}

????????
catch?(Exception?e)?{}

??????}

????}


????
return?all;

??}


??
public?int?getPageCount()?{

????
return?pageCount;

??}


??
public?int?getCurrentPage()?{

????
return?currentPage;

??}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读