在网上也看了很多了,后来在一个高人指点下,写了如下的分页程序,也请坛子里的其它高手指教:
<%!
int intPageSize,intPageCount,intRowCount,intPage;//定义各种要用到的变量
String strPage,sql;
%>
<%
//设置一页显示的记录数
intPageSize = 4;
//取得待显示页码
strPage = request.getParameter("page"
;
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1; //如果已经到了第一页再按上一页的话,则到第0页,所以当小于1时,为1
}
//读取记录
sql="DECLARE @rsc int/n";
sql+="SET @rsc=(select Count(id) from T_Duty)/n";
sql+="select top "+intPageSize+" @rsc[RC],id,Dtime,Dunit from T_Duty where id not in (select top "+((intPage-1)*intPageSize)+" id from T_Duty order by id desc) order by id desc";
ResultSet rs=stmt.executeQuery(sql);
//获取记录总数
rs.next();//记录移后一行
intRowCount=rs.getInt("RC"
;//取得当前行的RC值
//计算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
%>
<body>
<table width="480" border="1" cellpadding="6" cellspacing="0" bordercolor="#CC6600">
<tr>
<td>id</td>
<td>time</td>
<td>unit</td>
</tr>
<%
do {
%>
<tr>
<td><%= rs.getString("id"
%></td>
<td><%= rs.getString("Dtime"
%></td>
<td><%= rs.getString("Dunit"
%></td>
</tr>
<%
} while(rs.next());
%>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<%
rs.close();
%>
</table>
<!--加入表单验证,输入的页数不能大于总页数和不能小于1 -->
<script language="javascript">
function DateCheck(){
//取得输入的数据
page = document.form1.page.value;
pageCount = document.form1.PageCount.value;
//如果没有输入姓名
if ((page<0)||(page>pageCount))
{
alert("输入页码有误,请重新输入"
;
document.form1.page.focus();
return false;
}
else
{
return true;
}
}
</script>
<!--页面表单 -->
<form d="form1" name="form1" method="POST" action="002.jsp" onSubmit="return DateCheck()">
第<%=intPage%>页 共<%=intPageCount%>页
<%if(intPage<intPageCount){%><a
href="002.jsp?page=<%=intPage+1%>">下一页
</a><%}%> <%if(intPage>1){%><a href="002.jsp?page=<%=intPage-1%>">
上一页</a><%}%>
转到第:<input type="text" name="page" size="8"> 页
<span><input type="submit" value="GO" name="cndok"></span>
<input name="PageCount" type="hidden" id="PageCount" value="<%= intPageCount %>" />
</form>
这里面很重要的就是那个sql语句:
sql="DECLARE @rsc int/n";
sql+="SET @rsc=(select Count(id) from T_Duty)/n";
sql+="select top "+intPageSize+" @rsc[RC],id,Dtime,Dunit from T_Duty where id not in (select top "+((intPage-1)*intPageSize)+" id from T_Duty order by id desc) order by id desc";
然后在后面写了个javascipt来限制提交的页数.自己试了试还可以,
winXP SP2+tomcat 5.5.12+sqlserver 2000
呵呵,请坛子里的高手指教!
<%!
int intPageSize,intPageCount,intRowCount,intPage;//定义各种要用到的变量
String strPage,sql;
%>
<%
//设置一页显示的记录数
intPageSize = 4;
//取得待显示页码
strPage = request.getParameter("page"

if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1; //如果已经到了第一页再按上一页的话,则到第0页,所以当小于1时,为1
}
//读取记录
sql="DECLARE @rsc int/n";
sql+="SET @rsc=(select Count(id) from T_Duty)/n";
sql+="select top "+intPageSize+" @rsc[RC],id,Dtime,Dunit from T_Duty where id not in (select top "+((intPage-1)*intPageSize)+" id from T_Duty order by id desc) order by id desc";
ResultSet rs=stmt.executeQuery(sql);
//获取记录总数
rs.next();//记录移后一行
intRowCount=rs.getInt("RC"

//计算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
%>
<body>
<table width="480" border="1" cellpadding="6" cellspacing="0" bordercolor="#CC6600">
<tr>
<td>id</td>
<td>time</td>
<td>unit</td>
</tr>
<%
do {
%>
<tr>
<td><%= rs.getString("id"

<td><%= rs.getString("Dtime"

<td><%= rs.getString("Dunit"

</tr>
<%
} while(rs.next());
%>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<%
rs.close();
%>
</table>
<!--加入表单验证,输入的页数不能大于总页数和不能小于1 -->
<script language="javascript">
function DateCheck(){
//取得输入的数据
page = document.form1.page.value;
pageCount = document.form1.PageCount.value;
//如果没有输入姓名
if ((page<0)||(page>pageCount))
{
alert("输入页码有误,请重新输入"

document.form1.page.focus();
return false;
}
else
{
return true;
}
}
</script>
<!--页面表单 -->
<form d="form1" name="form1" method="POST" action="002.jsp" onSubmit="return DateCheck()">
第<%=intPage%>页 共<%=intPageCount%>页
<%if(intPage<intPageCount){%><a
href="002.jsp?page=<%=intPage+1%>">下一页
</a><%}%> <%if(intPage>1){%><a href="002.jsp?page=<%=intPage-1%>">
上一页</a><%}%>
转到第:<input type="text" name="page" size="8"> 页
<span><input type="submit" value="GO" name="cndok"></span>
<input name="PageCount" type="hidden" id="PageCount" value="<%= intPageCount %>" />
</form>
这里面很重要的就是那个sql语句:
sql="DECLARE @rsc int/n";
sql+="SET @rsc=(select Count(id) from T_Duty)/n";
sql+="select top "+intPageSize+" @rsc[RC],id,Dtime,Dunit from T_Duty where id not in (select top "+((intPage-1)*intPageSize)+" id from T_Duty order by id desc) order by id desc";
然后在后面写了个javascipt来限制提交的页数.自己试了试还可以,
winXP SP2+tomcat 5.5.12+sqlserver 2000
呵呵,请坛子里的高手指教!