jsp与mysql的分页

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp与mysql的分页相关的知识,希望对你有一定的参考价值。

请给个jsp与mysql的分页代码做参考,要求(1.2.3.4.5……页)当点到第5页前后又只显示2页(3.4.5.6.7)这样的。我在设计分页显示,但找不到好的代码这参考。希望大家能提供些好的代码(最好不要太大的)
谢谢了!
很容易的吗?
-------------------------------------------------
回答者,邹典龙 :真是服了你了,你上升达人排行榜了吗?

<%@ page contentType="text/html;charset=8859_1" %>

<%
//变量声明
java.sql.Connection sqlCon; //数据库连接对象
java.sql.Statement sqlStmt; //SQL语句对象
java.sql.ResultSet sqlRst; //结果集对象

java.lang.String strCon; //数据库连接字符串
java.lang.String strSQL; //SQL语句

int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
java.lang.String strPage;

int i;

//设置一页显示的记录数
intPageSize = 2;

//取得待显示页码
strPage = request.getParameter("page");
if(strPage==null)//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;

else//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;


//装载JDBC驱动程序
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

//设置数据库连接字符串
strCon = "jdbc:oracle:thin:@linux:1521:ora4cweb";

//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"hzq","hzq");

//创建一个可以滚动的只读的SQL语句对象
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);

//准备SQL语句
strSQL = "select name,age from test";

//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);

//获取记录总数
sqlRst.last();
intRowCount = sqlRst.getRow();

//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;

//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle</title>
</head>

<body>

<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>

<%
if(intPageCount>0)
//将记录指针定位到待显示页的第一条记录上
sqlRst.absolute((intPage-1) * intPageSize + 1);

//显示数据
i = 0;
while(i<intPageSize && !sqlRst.isAfterLast())
%>
<tr>
<td><%=sqlRst.getString(1)%></td>
<td><%=sqlRst.getString(2)%></td>
</tr>
<%
sqlRst.next();
i++;


%>

</table>

第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount)%><a href="jdbc20-oracle.jsp?page=<%=intPage+1%>">下一页</a><%%> <%if(intPage>1)%><a href="jdbc20-oracle.jsp?page=<%=intPage-1%>">上一页</a><%%>

</body>
</html>

<%
//关闭结果集
sqlRst.close();

//关闭SQL语句对象
sqlStmt.close();

//关闭数据库
sqlCon.close();
%>

可以试试先!

祝你好运!
----------------------------------

也可以用jsp+xml+html来实现,下面给出一个saucer(思归)给的xml+html的分页例子,不妨参考一下:
<html>
<body>
<!--the following XML document is "stolen" from MSXML4 documentation-->
<xml id="xmldoc">
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
<book id="bk103">
<author>Corets, Eva</author>
<title>Maeve Ascendant</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-11-17</publish_date>
<description>After the collapse of a nanotechnology
society in England, the young survivors lay the
foundation for a new society.</description>
</book>
<book id="bk104">
<author>Corets, Eva</author>
<title>Oberon's Legacy</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2001-03-10</publish_date>
<description>In post-apocalypse England, the mysterious
agent known only as Oberon helps to create a new life
for the inhabitants of London. Sequel to Maeve
Ascendant.</description>
</book>
<book id="bk105">
<author>Corets, Eva</author>
<title>The Sundered Grail</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2001-09-10</publish_date>
<description>The two daughters of Maeve, half-sisters,
battle one another for control of England. Sequel to
Oberon's Legacy.</description>
</book>
<book id="bk106">
<author>Randall, Cynthia</author>
<title>Lover Birds</title>
<genre>Romance</genre>
<price>4.95</price>
<publish_date>2000-09-02</publish_date>
<description>When Carla meets Paul at an ornithology
conference, tempers fly as feathers get ruffled.</description>
</book>
<book id="bk107">
<author>Thurman, Paula</author>
<title>Splish Splash</title>
<genre>Romance</genre>
<price>4.95</price>
<publish_date>2000-11-02</publish_date>
<description>A deep sea diver finds true love twenty
thousand leagues beneath the sea.</description>
</book>
<book id="bk108">
<author>Knorr, Stefan</author>
<title>Creepy Crawlies</title>
<genre>Horror</genre>
<price>4.95</price>
<publish_date>2000-12-06</publish_date>
<description>An anthology of horror stories about roaches,
centipedes, scorpions and other insects.</description>
</book>
</catalog>
</xml>
<table id="mytable" datasrc="#xmldoc" border="1" DATAPAGESIZE="2">
<thead><th>Title</th><th>Author</th><th>Genre</th><th>Publish Date</th><th>Price</th></thead>
<tbody><tr>
<td><span datafld="title"></span></td>
<td><span datafld="author"></span></td>
<td><span datafld="genre"></span></td>
<td><span datafld="publish_date"></span></td>
<td><span datafld="price"></span></td>
</tr>
</tbody>
</table>
<input type="button" value="previous page" onclick="mytable.previousPage()">
<input type="button" value="next page" onclick="mytable.nextPage()">
</body>
</html>

------------------------------------
分页显示的模板程序
<!--show_page.jsp-->
<%@ page import="java.lang.*" import="java.sql.*" import="java.util.*" contentType="text/html;charset=GB2312"%>
<%@ page import="tax.*"%>
<jsp:useBean id="RegisterBean" class="tax.RegisterBean" scope="page"/>
<jsp:useBean id="itemlist" class="tax.itemlist" scope="page"/>

<%
int PageSize = 10;//设置一页显示的记录数
int PageNum = 1; //初始化页码=1
int PageNumCount = (136+PageSize-1) / PageSize;//记算总页数

//计算要显示的页码
String strPageNum = request.getParameter("page");//取得<href>提交的页码
if(strPageNum==null) //表明在QueryString中没有page这一个参数,此时显示第一页数据
PageNum = 1;

else
PageNum = java.lang.Integer.parseInt(strPageNum);//将字符串转换成整型
if(PageNum<1) PageNum = 1;


if(PageNum>PageNumCount) PageNum = PageNumCount;//调整待显示的页码
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JSP例程 - 数据分页显示 -JDK1.2 </title>
</head>
<body>
<%
if(PageNumCount>0)

out.println(PageNum);//显示数据,此处只简单的显示页数

/*需要显示的数据,在此处显示

、、、

例如:
*/
//显示一个简单的表格
%>

<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th>总数</th>
<th>页数</th>
</tr>
<tr>
<th><%=PageNumCount%></th>
<th><%=PageNum%></th>
</tr>
</table>
第<%=PageNum%>页 共<%=PageNumCount%>页
<%if(PageNum<PageNumCount)%><a href="show_page.jsp?page=<%=PageNum+1%>">下一页</a><%%>
<%if(PageNum>1)%><a href="show_page?page=<%=PageNum-1%>">上一页</a><%%>
</body>
</html>
---------------------------------

一个bean,按照文档说的用。也希望你给出修改意见。
package mshtang.html;

/**
* <p>Title: DataBaseQuery</p>
* <p>Description: 用于数据库翻页查询操作</p>
* <p>Copyright: 厦门一方软件公司版权所有Copyright (c) 2002</p>
* <p>Company: 厦门一方软件公司</p>
* @author 小唐蔡
* @version 1.0
*/
import java.sql.*;
import javax.servlet.http.*;
import java.util.*;
import mshtang.StringAction;
public class DataBaseQuery


private HttpServletRequest request;
private StringAction S;
private String sql;
private String userPara;
private String[][] resultArray;
private String[] columnNameArray;
private String[] columnTypeArray;
private int pageSize;
private int columnCount;
private int currentPageNum;
private int currentPageRecordNum;
private int totalPages;
private int pageStartRecord;
private int totalRecord;
private static boolean initSuccessful;
private String currentJSPPageName;
private String displayMessage;

public DataBaseQuery()

S = new StringAction();
sql = "";
pageSize = 10;
totalRecord = 0;
initSuccessful = false;
currentJSPPageName = "";
displayMessage = "";
columnNameArray = null;
columnTypeArray = null;
currentPageRecordNum = 0;
columnCount = 0;


/**功能:数据库初始化操作,其它操作的前提。
*
* @param conn:数据库连接;
* @param request:jsp页面request对象;
* @param querySQL:查询语句;
* @param pageSize:每页显示记录数;
* @param startPageNum:开始显示页码
*/
public void init(Connection conn, HttpServletRequest request, String querySQL, int pageSize, int startPageNum)

if(conn != null)

this.request = request;
this.sql = request.getParameter("querySQL");
this.userPara = request.getParameter("userPara");
if(sql == null || sql.equals(""))

sql = querySQL;

if(this.userPara == null)

this.userPara = "";

if(S.isContains(sql, "select;from", ";", true))

try

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
columnCount = rsmd.getColumnCount();
columnNameArray = new String[columnCount];
columnTypeArray = new String[columnCount];
String columnName;
String value;
while(rs.next())

totalRecord++;
if(totalRecord == 1)

for(int i = 0; i < columnCount; i++)

columnNameArray[i] = rsmd.getColumnName(i + 1);
columnTypeArray[i] = rsmd.getColumnTypeName(i + 1);



rs.close();
//在总记录数大于0的情况下进行下列操作

//获取链接图象
if(totalRecord > 0 && pageSize > 0 && columnCount > 0 && startPageNum > 0)

//获取总页数
totalPages = totalRecord / pageSize;
int tempNum = totalRecord % pageSize;
if(tempNum != 0)

totalPages++;


//获得当前页页码
String currentPage = request.getParameter("currentPageNum");
currentPageNum = (currentPage == null || currentPage.equals(""))? startPageNum:Integer.parseInt(currentPage);
currentPageNum = (currentPageNum > totalPages)?totalPages:currentPageNum;
currentPageNum = (currentPageNum <= 0)?1:currentPageNum;

//获得当前页起始显示记录数
pageStartRecord = (currentPageNum - 1) * pageSize + 1;
pageStartRecord = (pageStartRecord <= 0)?1:pageStartRecord;
pageStartRecord = (pageStartRecord > totalRecord)?totalRecord:pageStartRecord;

//获得当前页显示记录数
if(currentPageNum * pageSize > totalRecord)

currentPageRecordNum = totalRecord - (currentPageNum - 1) * pageSize;

else

currentPageRecordNum = pageSize;

resultArray = new String[currentPageRecordNum][columnCount];

//用于跳过前面不需显示的记录
int continueRowNum = 0;

//用于跳过后面不再显示的记录
int breakRowNum = 0;

ResultSet rs2 = st.executeQuery(sql);
while(rs2.next())

//跳过前面不需显示的记录
continueRowNum++;
if(continueRowNum < pageStartRecord)

continue;

//存取当前页需显示的记录到二维数组
for(int i = 0; i < columnCount; i++)

value = rs2.getString(columnNameArray[i]);
value = (value == null)?"":value.trim();
resultArray[breakRowNum][i] = value;

//跳过后面不再显示的记录
breakRowNum++;
if(breakRowNum >= currentPageRecordNum)

break;


rs2.close();

st.close();

catch(SQLException e)

e.printStackTrace();


transferSQL(sql);
initSuccessful = true;



/**功能:数据库初始化操作,其它操作的前提,默认每页显示10条记录。
*
* @param conn:数据库连接;
* @param request:jsp页面request对象;
* @param querySQL:查询语句;
* @param startPageNum:开始显示页码
*/
public void init(Connection conn, HttpServletRequest request, String querySQL, int startPageNum)

init(conn, request, querySQL, 10, startPageNum);


/**功能:数据库初始化操作,其它操作的前提,默认从第一页开始显示。
*
* @param conn:数据库连接;
* @param request:jsp页面request对象;
* @param querySQL:查询语句;
* @param pageSize:每页显示记录数;
*/
public void init(Connection conn, HttpServletRequest request, int pageSize, String querySQL)

init(conn, request, querySQL, pageSize, 1);


/**功能:数据库初始化操作,其它操作的前提,默认从第一页开始显示,每页显示10条记录。
*
* @param conn:数据库连接;
* @param request:jsp页面request对象;
* @param querySQL:查询语句;
*/
public void init(Connection conn, HttpServletRequest request, String querySQL)

init(conn, request, querySQL, 10, 1);


/**功能:给出没有初始化的提醒信息,内部调用。
*
*/
private static void getMessage()

if(!initSuccessful)

System.out.println("没有完成初始化");



/**功能:得到查询结果的总记录数。
*
* @return
*/
public int getTotalRecord()

getMessage();
return totalRecord;


/**功能:得到当前页的页码
*
* @return
*/
public int getCurrentPageNum()

getMessage();
return currentPageNum;


/**功能:获得当前页记录数
*
* @return
*/
public int getCurrentPageRecord()

getMessage();
return currentPageRecordNum;

/**功能:获得总页数
*
* @return
*/
public int getTotalPages()

getMessage();
return totalPages;


/**获得调用该javaBean的jsp页面文件名,用于翻页操作,可以免去外界输入页面参数的错误,用于内部调用。
*
* @return:调用该javaBean的jsp页面文件名
*/
private String getCurrentJSPPageName()

getMessage();
if(request != null)

String tempPage = request.getRequestURI();
String[] tempArray = S.stringSplit(tempPage, "/");
if(tempArray != null && tempArray.length > 0)

currentJSPPageName = tempArray[tempArray.length - 1];


return currentJSPPageName;


/**功能:用于显示图片链接或字符串(上一页、下一页等链接)。用于翻页操作,内部调用
*
* @param imageSource:图片来源;
* @param i:翻页信息,1表示第一页,2表示上一页,3表示下一页,4表示尾页,
* @return:显示的链接图片或链接文字
*/
private void displayMessage(String imageSource, int i)

getMessage();
if(imageSource != null && !imageSource.equals(""))

displayMessage = "<img src=\"" + imageSource + "\" border=\"0\">";

else

switch(i)

case 1:
displayMessage = "<font size=\"2\">[首页]</font>";
break;
case 2:
displayMessage = "<font size=\"2\">[上一页]</font>";
break;
case 3:
displayMessage = "<font size=\"2\">[下一页]</font>";
break;
case 4:
displayMessage = "<font size=\"2\">[尾页]</font>";




/**功能:链接到相应页面,内部调用。
*
* @param imageSource:图片来源;
* @param i:翻页信息,1表示第一页,2表示上一页,3表示下一页,4表示尾页,
* @return:相应页面的链接
*/
private String getNavigation(String imageSource, int i)

displayMessage(imageSource, i);
int pageNum = 0;
switch(i)

case 1:
pageNum = 1;
break;
case 2:
pageNum = currentPageNum - 1;
break;
case 3:
pageNum = currentPageNum + 1;
break;
case 4:
pageNum = totalPages;

currentJSPPageName = "<a href=\"" + currentJSPPageName + "?currentPageNum=" + pageNum + "&querySQL=" + sql + userPara + "\">" + displayMessage + "</a>";
if(((currentPageNum == 1 || totalPages == 0) && (i == 1 || i == 2)) || (currentPageNum == totalPages && (i == 3 || i == 4)))

currentJSPPageName = displayMessage;

return currentJSPPageName;


/**功能:翻到第一页。以图片显示。
*
* @param imageSource
* @return
*/
public String firstPage(String imageSource)

return makePages(imageSource, 1);


/**功能:方法重载。翻到第一页,以文字显示。
*
* @return
*/
public String firstPage()

return firstPage("");


/**功能:翻到上一页,以图片显示链接。
*
* @return
*/
public String nextPage(String imageSource)

return makePages(imageSource, 3);


/**功能:方法重载。翻到下一页,以文字显示。
*
* @return
*/
public String nextPage()

return nextPage("");


/**功能:翻到上一页,以图片显示链接。
*
* @return
*/
public String previousPage(String imageSource)

return makePages(imageSource, 2);


/**功能:方法重载。翻到上一页,以文字显示。
*
* @return
*/
public String previousPage()

return previousPage("");


/**功能:方法重载。翻到尾页,以图片显示链接。
*
* @return
*/
public String lastPage(String imageSource)

return makePages(imageSource, 4);


/**功能:方法重载。翻到尾页,以文字显示链接。
*
* @return
*/
public String lastPage()

return lastPage("");


/**功能:得到查询记录中某字段的值。
*
* @param recordIndex:记录索引号,从0开始。
* @param columnName:字段名;
* @return:有结果返回该字段的值,否则为"";
*/
public String getColumnValue(int recordIndex, String columnName)

getMessage();
String columnValue = "";
if(recordIndex >=0 && recordIndex < currentPageRecordNum)

int columnIndex = S.findElementIndexOfArray(columnNameArray, columnName, true);
if(resultArray != null && columnIndex != -1)

columnValue = resultArray[recordIndex][columnIndex];


return columnValue;


/**功能:方法重载。返回特定行特定列的值。
*
* @param recordIndex:行索引,从0开始;
* @param columnIndex:列索引,从1开始;
* @return
*/
public String g
参考技术A 这个特别简单,一次我就弄成了!不用该很多的,你看看,希望可以帮到你!
<%
int intPageSize=3; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage=1; //待显示页码
String strPage;
int i; //设置一页显示的记录数
intPageSize = 3; //取得待显示页码
strPage = request.getParameter("page");
if(strPage==null)//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;

else//将字符串转换成整型
intPage = Integer.parseInt(strPage);
if(intPage<1) intPage = 1;

//获取记录总数
rs.last();
intRowCount = rs.getRow();
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
%>
<%
if(intPageCount>0)
//将记录指针定位到待显示页的第一条记录上
rs.absolute((intPage-1) * intPageSize + 1);
//显示数据
i = 0;
while(i<intPageSize && !rs.isAfterLast())
%>
<tr>
<td class="text_green STYLE10"><%=rs.getString("biaoti")%></td>
<td class="text_green STYLE10"><div align="center"><%=rs.getDate("fbsj")%></div></td>
<td width="12%" bgcolor="#F1AC09" class="STYLE9"><div align="center"><a href="upadd1.jsp?id=<%=rs.getInt(1)%>" class="STYLE13">编辑</a></div></td>
<td width="12%" bgcolor="#F1AC09" class="STYLE9"><div align="center"><a href="delete.jsp?id=<%=rs.getInt(1)%>">删除</a></div></td>
</tr>
<br>
<br>
<tr>
<td colspan="4"><div align="center" class="text_orange STYLE10">
<%
rs.next();
i++;


%>
第<%=intPage%>页 共<%=intPageCount%>页 <br>
<a href="xxgl2.jsp?page=1">第一页</a>
<%if(intPage>1)%><a href="xxgl2.jsp?page=<%=intPage-1%>">上一页</a><%%>
<%if(intPage<intPageCount)%><a href="xxgl2.jsp?page=<%=intPage+1%>">下一页</a><%%>
<a href="index.jsp?page=<%=intPageCount%>">最后一页</a>
参考技术B 给你个sql你参考下
select top 10 * from tab where id not in(select top 20 id from tab);
就是第三页。
自己写啊 ,很容易的
参考技术C www.open-open.com 搜索分页~ 参考技术D f

oracle与mysql与sqlserver的分页

 假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql、Oracle和SQL Server分页查询student表。

1、Mysql的分页查询: 

1 SELECT
2     *
3 FROM
4     student
5 LIMIT (PageNo - 1) * PageSize,PageSize;

理解:(Limit n,m)  =>从第n行开始取m条记录,n从0开始算。

2、Oracel的分页查询:

技术分享
 1 SELECT
 2     *
 3 FROM
 4     (
 5         SELECT
 6             ROWNUM rn ,*
 7         FROM
 8             student
 9         WHERE
10             Rownum <= pageNo * pageSize
11     )
12 WHERE
13     rn > (pageNo - 1) * pageSize
技术分享

理解:假设pageNo = 1,pageSize = 10,先从student表取出行号小于等于10的记录,然后再从这些记录取出rn大于0的记录,从而达到分页目的。ROWNUM从1开始。

3、SQL Server分页查询:

技术分享
 1 SELECT
 2     TOP PageSize *
 3 FROM
 4     (
 5         SELECT
 6             ROW_NUMBER () OVER (ORDER BY id ASC) RowNumber ,*
 7         FROM
 8             student
 9     ) A
10 WHERE
11     A.RowNumber > (PageNo - 1) * PageSize
技术分享

 理解:假设pageNo = 1,pageSize = 10,先按照student表的id升序排序,rownumber作为行号,然后再取出从第1行开始的10条记录。

  分页查询有的数据库可能有几种方式,这里写的可能也不是效率最高的查询方式,但这是我用的最顺手的分页查询,如果有兴趣也可以对其他的分页查询的方式研究一下。

 

另一篇博文:

1、MySQL用limit分页

/*

* sql:可以是单表的查询语句,也可以是多表的联合查询语句

* firstIndex:其实的索引

* pageSize:每页显示的记录数

*/

select o.* from (sql) o limit firstIndex,pageSize

 

eg:  select * from (select * from Student)  limit 0,20;    //取1-20条数据

        select * from (select * from Student)  limit 20,20;    //取21-40条数据

 

第二种 写法

select * from Student  where limit (currentPage-1)*pageSize ,pageSize;

 

 

2、Oracle用ROWNUM分页

/*

* firstIndex:起始索引

* pageSize:每页显示的数量

* sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句

*/

select * from(select a.*,ROWNUM rn from(sql) a where ROWNUM<=(firstIndex+pageSize)) where rn>firstIndex

 

 

eg:    select * from(select a.*,ROWNUM rn from(select * from Student order by id asc) a where ROWNUM<=20) where rn>0   // 取1-20条数据

          select * from(select a.*,ROWNUM rn from(select * from Student order by id asc) a where ROWNUM<=(20+20)) where rn>20   // 取21-40条数据

第二种写法

select * from ( select rownum rn,t.* from Student  t where rownum <= currentPage*pageSize ) where rownum > (currentPage -1)*pageSize;

 

 

3、SqlServer用top分页

/*

* firstIndex:起始索引

* pageSize:每页显示的数量

* orderColumn:排序的字段名

* sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句

*/

select top pageSize o.* from (select row_number() over(order by orderColumn) as rownumber,* from(sql)) as o where rownumber>firstIndex;

 

eg:      select top 20 o.* from (select row_number() over(order by id asc) as rownumber,* from(select * from Student)) as o where rownumber>0;   // 取1-20条数据

        

第二种写法

select top  pageSize  * from Student  where id not in (select top (currentPage-1)*pageSize  id from Student) ;

以上是关于jsp与mysql的分页的主要内容,如果未能解决你的问题,请参考以下文章

页面设置中“分页符”和“下一页”的区别是啥?

jsp:使用jsp完成数据的分页显示

关于Java的分页算法,急!

帝国cms——首页怎么分页??

dede织梦文章页分页导航副标题如何删除标题后面带的#号

oracle 的分页查询与mysql 的分页查询