差不多吧 分页显示就是全部查出来放到一个地方,逐页显示。 查看每页的时候不再调数据库,优点就是调库次数少,缺点是全部记录多的时候耗内存另外还有一种分页查询, 就是where id>(页数-1)*每页条数 order by id limit 每页条数; 优点是可以控制查询条数,从而控制内存和调库次数 缺点,因为可控所以缺点可忽略,哈哈基本上都用分页查询
String phone=request.getParameter("phone"); String sql="select mbno,msgcontent,feeid,stat,rpttime,spno from dbYMsms..tSmsMtRpt where mbno='"+phone+"' and upper(feeid)!='HELP' order by rpttime"; url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbYMsms"; con=DriverManager.getConnection(url,"sa","123456"); stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=stmt.executeQuery(sql);
分页显示就是全部查出来放到一个地方,逐页显示。
查看每页的时候不再调数据库,优点就是调库次数少,缺点是全部记录多的时候耗内存另外还有一种分页查询,
就是where id>(页数-1)*每页条数 order by id limit 每页条数;
优点是可以控制查询条数,从而控制内存和调库次数
缺点,因为可控所以缺点可忽略,哈哈基本上都用分页查询
当我点下一页的时候,出现了错误,out.print("phone")显示null后来我是在out.print(" <a href=Select.jsp?dipage="+(dipage+1)+"> 下一页   </a> "); 中,增加了&phone="+phone+"以便传递参数后解决的问题
out.print("<a href=Select.jsp?dipage="+(dipage+1)+"&phone="+phone+">下一页  </a>");
所以我在想,既然下一页后不用查询了,那我所用到的sql语句在点下一页后参数不全也是可以读出数据的啊select.jsp如下:
-------select.jsp-----------------------------
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%
int dipage=1;//当前页码默认为1
String pages=request.getParameter("dipage");
if(pages==null){pages="1";}
try{dipage=Integer.parseInt(pages);}
catch(Exception e){dipage=1;}
%>
<html>
<body>
<%
Connection con;
Statement stmt;
String url;
ResultSet rs;
try
{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
}
catch(ClassNotFoundException e){out.print("类找不到!");}
try
{
String phone=request.getParameter("phone");
String sql="select mbno,msgcontent,feeid,stat,rpttime,spno from dbYMsms..tSmsMtRpt where mbno='"+phone+"' and upper(feeid)!='HELP' order by rpttime";
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbYMsms";
con=DriverManager.getConnection(url,"sa","123456");
stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
int countRecord=0;//记录条数
int countPageRecord=0;//每页记录条数
int countPage=0;//总页数
countPageRecord=15;//每页15条记录,设置每页记录条数
rs.last();
countRecord=rs.getRow();
if(countRecord%countPageRecord==0)
{
countPage=countRecord/countPageRecord;
}
else
{
countPage=countRecord/countPageRecord+1;
}
if((dipage-1)*countPageRecord==0)
{
rs.beforeFirst();
}
else
{
rs.absolute((dipage-1)*countPageRecord+1);
}
out.print(" <Table Border> ");
out.print(" <hr color=red> ");
out.print(" <form action=Select.jsp method=post> ");
out.print(" <td colspan=10> ");
out.print(" </td> </tr> </form> ");
out.print(" <tr> ");
out.print(" <tr> <td colspan=20 align=center> 对此用户的MT信息 </td> </tr> ");
out.print(" <td width=90> "+"用户手机号码");
out.print(" <td width=340> "+"短信内容");
out.print(" <td width=70> "+"业务代码");
out.print(" <td width=65> "+"MT状态");
out.print(" <td width=90> "+"报告时间");
out.print(" <td width=95> "+"所用接入号");
out.print(" </tr> ");
int i=0;
while(rs.next())
{
out.print(" <tr> ");
out.print(" <td> "+rs.getString(1)+" </td> ");
out.print(" <td> "+rs.getString(2)+" </td> ");
out.print(" <td> "+rs.getString(3)+" </td> ");
out.print(" <td> "+rs.getString(4)+" </td> ");
out.print(" <td> "+rs.getString(5)+" </td> ");
out.print(" <td> "+rs.getString(6)+" </td> ");
out.print(" </tr> ");
i++;
if(i> =countPageRecord)break;
}
out.print(" <tr> <td colspan=20 align=center> ");
out.print("共"+countRecord+"条记录,共"+countPage+"页,当前第"+dipage+"页,每页"+countPageRecord+"条记录");
if(dipage==1){}
else
{
out.print(" <a href=Select.jsp?dipage=1> 首页   </a> ");
out.print(" <a href=Select.jsp?dipage="+(dipage-1)+"> 上一页   </a> ");
}
if(dipage==countPage){}
else
{
out.print(" <a href=Select.jsp?dipage="+(dipage+1)+"> 下一页   </a> ");
out.print(" <a href=Select.jsp?dipage="+countPage+"> 末页 </a> ");
}
out.print(" </Table> ");
stmt.close();
con.close();
}
catch(SQLException e1)
{
out.print("SQL异常");
}
%>
</body>
</html>
2.if(变量==null)
{
从数据库中去结果集;
把结果集存入session;
}这个下面才是把结果集分页显示
2.数据量比较小时,可以一次全部取出放在内存中
3.数据量大时,全部取出再分页是不现实的。按楼上说的做分页查询吧。Hibernate,JDBC都有相应的支持