求分页程序

sdsx 2003-06-05 06:07:03
我用的是jdbc for sql7.0
哪位有和我相同配置的分页程序。不盛感激!
Orcal的请不要给我发了
sql2000的也请不要发了
因为jdbc for sql7.0不支持.last()等方法。
...全文
18 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongfucai 2003-06-06
  • 打赏
  • 举报
回复
可以用Hashtable来做
第一次
先把search出来的数据的主关键字按页放到Hashtable中
再把这个Hashtable放到session中

然后每一页可以从这个session中Hashtable取
yellowZF 2003-06-06
  • 打赏
  • 举报
回复
我最近写了一个struts里的分页,很好喔!!

可惜对你没用....
xiezhirong 2003-06-06
  • 打赏
  • 举报
回复
忘了说明了:
recNum=lyaq.getRecNum();//这句话是用来获得总记录数,你应该把=号右边的代码替换掉,自己执行一个类似于“select count(*) from table_name ”的sql语句,然后把查出来的记录总数赋给recNum
还有就是<a onMouseMove="this.style.cursor='hand';" onClick = "document.form1.action = 'lyaq_cxjg.jsp?page=<%=pageNum+1%>';form1.submit();">下一页</a>这里面的lyan_cxjg.jsp你应该替换成自己的页面名字
xiezhirong 2003-06-06
  • 打赏
  • 举报
回复
你看看我的程序片段吧:
//以下代码用来滚动记录集到当前页的第一条纪录
int recNum,pageNum,PN,total;//recNum--总记录数,pageNum---当前页数,PN---每页显示记录数,total---总页数
PN=5;//每页显示记录数
if(request.getParameter("page")==null) pageNum=1;
else if(request.getParameter("page").equals("")) pageNum=1;
else pageNum=Integer.parseInt(request.getParameter("page"));
recNum=lyaq.getRecNum();
if(rs!=null){
//定位到当前页的第一条记录的前面一条,
for(int i=0;(i<(PN*(pageNum-1)))&&(i<recNum)&&(rs.next());i++)
System.out.println(i);
}
if(recNum%PN==0) total=recNum/PN;
else total=recNum/PN+1;

//以下代码用来输出记录集内容到表格
int i=0;
while(rs.next()&&i<PN){
//....输出表格内容
i++;
}

//以下代码放于表格的最后一行,用来翻页:
<td colspan=6> <div align="right"> <a onMouseMove="this.style.cursor='hand';" onClick="document.form1.action='lyaq_cxjg.jsp';form1.submit();">首页</a>
<%if(pageNum<=1){
%>
<a> 上一页</a>
<%
}
else{
%>
<a onMouseMove="this.style.cursor='hand';" onClick = "document.form1.action = 'lyaq_cxjg.jsp?page=<%=pageNum-1%>';form1.submit();">上一页</a>
<%
}
if(total<=pageNum){
%>
<a> 下一页</a>
<%
}
else{
%>
<a onMouseMove="this.style.cursor='hand';" onClick = "document.form1.action = 'lyaq_cxjg.jsp?page=<%=pageNum+1%>';form1.submit();">下一页</a>
<%
}
%>
<a onMouseMove="this.style.cursor='hand';" onClick = "document.form1.action ='lyaq_cxjg.jsp?page=<%=total%>';form1.submit();">尾页</a> </div></td>
sdsx 2003-06-06
  • 打赏
  • 举报
回复
stevene(冰城绝恋)你提供的分页程序我有,但是里面的sqlRst.last(); 和sqlRst.isAfterLast()方法sql7.0的jdbc不支持啊!
greenmartian 2003-06-06
  • 打赏
  • 举报
回复
请问
1是不是每次看下一页都要重新查询一次sqlRst?
2下面的语句时什么时候执行,是用户的什么动作使其执行还是自动执行?

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

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

//关闭数据库
sqlCon.close();
stevene 2003-06-06
  • 打赏
  • 举报
回复
JSP数据库数据分页显示

统一教学网
日期:2001-11-27 9:26:31
出处:-
作者:何志强[hhzqq@21cn.com]

<%--
功能:JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle
--%>

<%@ page contentType=\"text/html;charset=8859_1\" %&g
t;

<%
//变量声明
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();

MichaelHou528 2003-06-06
  • 打赏
  • 举报
回复
select fields from (select fields,rownum as r from tablename)
where r >=minvalue and r<=maxvalue
entice 2003-06-06
  • 打赏
  • 举报
回复


select top 1000 * from abc where 1=1 and id not in (select top 10000 id from abc where 1=1 order by id desc) order by id desc


SELECT * FROM abc where ID IN (SELECT TOP 11000 id FROM abc where 1=1 order by id desc) AND ID NOT IN (SELECT TOP 10000 id FROM abc where 1=1 order by id desc)
sdsx 2003-06-06
  • 打赏
  • 举报
回复
up
yinxiaochun 2003-06-06
  • 打赏
  • 举报
回复
最好的还是弄一个session的bean,很多地方有这个方法的介绍!
yinxiaochun 2003-06-06
  • 打赏
  • 举报
回复
数据量不多用sql分页也不麻烦啊?
其实sql分页很方便,而直接在jsp里面分页,得考虑很多的问题
MichaelHou528 2003-06-06
  • 打赏
  • 举报
回复
分页最好用sql语句来完成,如果数据量特别庞大的话,先全部取出再分页的效率会很低,所以建议你用sql语句来完成分页

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧