不管是否分页,显示基本是一样的,只不过从数据库取回的数据不同,不分页就全部取回,分页就只取回指定页对应的行。下面以SQLServer为例说明怎么分页从数据库中取回数据吧。假设每页10行,现在要取第8页的数据,用下面的查询:
select top 10 * from myTable where id not in (select top 70 id from myTable order by id) order by id
SQLServer的查询中"top n"表示只返回符合条前的前n行,如果有order by子句,“前n行”是指经过order by排序后的前n行。上面的例子中,后面的子查询用来排除掉前70行(即前面7页的数据)的,order by子句不能省,否则多次执行上面语句,每次排除掉的70行可能不一样。同理,主查询的order by子句也不能省。其它数据库的查询方法要看数据库的SQL手册了,我也不懂。
select top 10 * from myTable where id not in (select top 70 id from myTable order by id) order by id
SQLServer的查询中"top n"表示只返回符合条前的前n行,如果有order by子句,“前n行”是指经过order by排序后的前n行。上面的例子中,后面的子查询用来排除掉前70行(即前面7页的数据)的,order by子句不能省,否则多次执行上面语句,每次排除掉的70行可能不一样。同理,主查询的order by子句也不能省。其它数据库的查询方法要看数据库的SQL手册了,我也不懂。
解决方案 »
- java Character 流与byte流的区别
- hibernate两表联合查询的结果处理
- 在jsp页面怎么动态的同过form标签里的action传参数
- 有关上传时文件的验证问题
- [XML]请教如何注释一个节点
- 有没有办法看到源代码(用FRAME组成的页面)
- 要调用dephi写好的web service,不知道如何调用,有什么好的教程介绍一下?
- struts使用过程中的问题
- 此问题已开了400分了,JB8联接Oracle9i(急呀!!!!!!!!!!)
- 这是什么错误??JB+Weblogic7
- 在struts-config.xml里配置了数据库,在普通的类里,要如何调用这个conn连接啊
- 请各位高手看看这是什么错误!
int ShowPage=1;//设置欲显示的页数
int RowCount=0;//ResultSet的记录笔数
int PageCount=0;//ResultSet分页后的总页数
Connection con=null;
try{
String sql="SELECT user_ID,user_historymoney,user_operatedate,user_time,user_operatortype,user_operatemoney,user_money1,operatornumber FROM jyls WHERE user_ID="
+"'"+loguser+"'"
+"AND user_operatedate<="
+"'"+date4+"'"
+"AND user_operatedate>="
+"'"+date3+"'";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:lcc");
ResultSet rs=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY).executeQuery(sql);//创建可回滚的结果集对象,并执行SQL语句
if(!rs.next())
{
request.setAttribute("timeflow","flow1");
%>
<jsp:forward page="userhistoryquery.jsp"/>
<%
}
else{
rs.last();//将指标移至最后一笔记录
RowCount=rs.getRow();//取得ResultSet中记录的笔数
//计算显示的页数
PageCount=((RowCount%PageSize)==0?(RowCount/PageSize):(RowCount/PageSize)+1);
String ToPage=request.getParameter("ToPage");
if(ToPage!=null)
{
ShowPage=Integer.parseInt(ToPage);
if(ShowPage>PageCount)
{
ShowPage=PageCount;
}
else if(ShowPage<=0)
{
ShowPage=1;
}
}
%>
<html>
<head>
<title>客户历史帐目</title>
</head>
<br/>
<br/>
<br/>
<body bgcolor=lightblue>
<center>
<p><font size=4 color=#CD5C5C face="黑体">历史帐目查询</font>
<br/>
<br/>
<font size=3 color=#CD5C5C><%=date3%>到<%=date4%></font></p>
<center>
<h3>当前在第<font size=3 color=red><%=ShowPage%></font>页,共<font size=3 color=red><%=PageCount%></font>页</h3>
<br/>
<%
//计算欲显示页的第一笔记录位置
rs.absolute((ShowPage-1)*PageSize+1);
out.print("<table BORDER=0 CELLSPACING=0 CELLPADDING=0 bgcolor=white align=center>");
out.print("<tr>");
out.print("<td>");
out.print("<table width=100% BORDER=0 CELLSPACING=1 CELLPADDING=1>");
out.print("<tr bgcolor=lightblue align=center>");
out.print("<th>"+"历史金额");
out.print("<th>"+"发生金额");
out.print("<th>"+"帐户余额");
out.print("<th>"+"操作日期");
out.print("<th>"+"操作时间");
out.print("<th>"+"操作类型");
out.print("<th>"+"操作员号码");
out.print("</tr>");
//利用FOR循环配合PageSize属性输出一页中的记录
for(int i=1;i<=PageSize;i++)
{
// get fields from row
String dbhistorymoney = rs.getString("user_historymoney");
String dboperatemoney = rs.getString("user_operatemoney");
String dbmoney1=rs.getString("user_money1");
String dboperatedate= rs.getString("user_operatedate");
String dbtime=rs.getString("user_time");
String dboperatortype=rs.getString("user_operatortype");
String dboperatornumber=rs.getString("operatornumber");
out.print("<tr bgcolor=lightblue align=center>");
out.print("<th>"+dbhistorymoney);
out.print("<th>"+dboperatemoney);
out.print("<th>"+dbmoney1);
out.print("<th>"+dboperatedate);
out.print("<th>"+dbtime);
out.print("<th>"+dboperatortype);
out.print("<th>"+dboperatornumber);
out.print("</tr>");
if(!rs.next())//判断是否到达最后一笔记录
{
break;
}
}
out.print("</table>");
out.print("</td>");
out.print("</tr>");
out.print("</table>");
%>
<br/>
<table>
<tr valign=baseline align=center>
<%
//判断目前所在分页是否为第一页,不是则显示到第一页和上一页的超链接
if(ShowPage!=1)
{
%>
<td width=100>
<A href="userhistoryquery1.jsp?ToPage=<%=1%>&date1=<%=date1%>&date2=<%=date2%>">到第一页</A>
</td>
<td width=100>
<A href="userhistoryquery1.jsp?ToPage=<%=ShowPage-1%>&date1=<%=date1%>&date2=<%=date2%>">到上一页</A>
</td>
<%
}
//判断目前所在分页是否为最后一页,不是则显示到最后一页以ToPage参数传递自己
if(ShowPage!=PageCount)
{
%>
<td width=100>
<A href="userhistoryquery1.jsp?ToPage=<%=(ShowPage+1)%>&date1=<%=date1%>&date2=<%=date2%>">到下一页</A>
</td>
<td width=100>
<A href="userhistoryquery1.jsp?ToPage=<%=PageCount%>&date1=<%=date1%>&date2=<%=date2%>">到最后一页</A>
</td>
<%
}
%>
<td width=100>
<form action="userhistoryquery1.jsp" method="post" name="form1">
到
<input type="text" name="ToPage" style="height:20px;width:40px" value=<%=ShowPage%>>页
<input type="hidden" name="date1" value=<%=date3%>>
<input type="hidden" name="date2" value=<%=date4%>>
</form>
</td>
</tr>
</table>
<%
rs.close();//关闭结果集
con.close();//关闭数据库连接