在线等待,那位大哥可以解决分页问题,欢迎“心宇”老大来看看

smartzhang 2002-12-10 09:42:20
在分页时发生如下错误:javax.servlet.ServletException: Result set type is TYPE_FORWARD_ONLY,这是怎么回事???小弟特附上源码,请各位大哥帮忙看看,找找问题。3x!!!
...全文
33 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangshangajie 2002-12-25
  • 打赏
  • 举报
回复
晓刚的这个在我这怎么着都不好使,让我调了一上午都不成。害死我了,
smartzhang 2002-12-10
  • 打赏
  • 举报
回复
谢谢xcgh(晓刚) ,我已经用别的分页程序作出来了,可是我还是想要解决我上面遇到的问题,我想这样才可以有所提高啊。
xcgh 2002-12-10
  • 打赏
  • 举报
回复
以上是分页程序。含有BEAN的。你看看。这是MYSQL数据库的。已测试好使。
smartzhang 2002-12-10
  • 打赏
  • 举报
回复
楼上的大哥啊,你的代码也太长了啊,我想要的是解决我的问题,不是要分页的代码啊,我已经找到很多代码了,可是就这个问题在困扰着我,希望就这个问题各位老大给点建议啊
xcgh 2002-12-10
  • 打赏
  • 举报
回复
package netzero;
import java.sql.*;
public class mydb
{
String driverName = "com.caucho.jdbc.mysql.Driver";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String connURL="jdbc:mysql_caucho://localhost:3306/mydata";
String MyUser="root";
String MyPassword="";
public mydb()
{
try
{
Class.forName(driverName);
}
catch (java.lang.ClassNotFoundException e)
{
System.err.println("netzero(String): " + e.getMessage());
}
}

public ResultSet executeQuery(String sql) throws SQLException
{
conn = DriverManager.getConnection(connURL,MyUser,MyPassword);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
return rs;
}

public boolean closeConn()
{
try
{
if (rs!=null) rs.close();
if (stmt!=null) stmt.close();
if (conn!=null) conn.close();
return true;
}
catch ( SQLException ex )
{
System.err.println("closeConn: " + ex.getMessage());
return false;
}
}
}
xcgh 2002-12-10
  • 打赏
  • 举报
回复
<jsp:useBean id="mydata" scope="page" class="netzero.mydb"/>
<jsp:useBean id="mypage" scope="page" class="vod.PageCt"/>
<%@ page contentType="text/html;charset=ISO8859_1"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*"%>
<%
try
{
String sqlcou="select count(*) from mytable";
ResultSet rs0=mydata.executeQuery(sqlcou);
rs0.next();
long data_num=rs0.getLong(1);
long Current_Page = 0;
String currentpage=(String)request.getParameter("currentpage");
if (currentpage != null && !currentpage.equals(""))
{
Current_Page = Integer.parseInt(request.getParameter("currentpage"));
}
String Query_Page=(String)request.getParameter("Query_Page");
if (Query_Page!=null && !Query_Page.equals(""))
{
Current_Page = Integer.parseInt(request.getParameter("Query_Page"))-1;
}
mypage.Init(Current_Page,data_num);
long l_start = mypage.getStart();
long l_end = mypage.getEnd();
String sql="select * from mytable";
ResultSet rs = mydata.executeQuery(sql);
out.println("<table>");
long i=0;
while((i<l_start) && rs.next())
{
i++;
}
//输出查询结果
long j=0;
while(rs.next() && (i<l_end))
{
j=i+1;
out.println("<tr align=center>");
out.println("<td bgcolor=#ced4ec>"+rs.getString("Msg_ID")+"</td>");
out.println("<td bgcolor=#ced4ec>"+rs.getString("Msg_Title")+"</td>");
out.println("<td bgcolor=#ced4ec>"+rs.getString("Msg_Author")+"</td>");
out.println("<td bgcolor=#ced4ec>"+rs.getString("Msg_Context")+"</td>");
out.println("<td bgcolor=#ced4ec>"+rs.getString("Msg_Time")+"</td>");
out.println("</tr>");
i++;
}
out.println("</table>");
%>
<table width=600>
<tr bgcolor=#b5dbff>
<form method=GET action=mysee.jsp>
<td width=80 align=center valign=bottom>共 <%=mypage.getTotalnum()%> 条</td>
<td width=80 align=center valign=bottom><%=mypage.getCurpage()+1%>/<%=mypage.getTotalpage()%> 页</td>
<td width=120 align=center>查看第 <input type=text name=Query_Page size=3> 页</td>
<td width=50 align=center valign=bottom><a href=mysee.jsp?currentpage=<%=mypage.getPrepage()%>>上页</a></td>
<td width=50 align=center valign=bottom><a href=mysee.jsp?currentpage=<%=mypage.getNextpage()%>>下页</a>
</td>
</tr>
</table>
<%
}
catch (SQLException E)
{
out.println("SQLException: " + E.getMessage());
out.println("SQLState: " + E.getSQLState());
out.println("VendorError: " + E.getErrorCode());
}
%>
<% //关闭mysql连接
try
{
if(!mydata.closeConn());
}
catch (Exception ex)
{
System.err.println("closeConn: " + ex.getMessage());
}
%>
xcgh 2002-12-10
  • 打赏
  • 举报
回复
package vod;
import java.sql.*;
import java.util.*;

public class PageCt
{
private long l_start; //开始纪录
private long l_end; //结束纪录
private long l_curpage; //当前页数
private long l_totalnum;//总记录数
private int int_num=5; //每页几条
private long l_totalpage; //总的页数

public void Init(long currentpage,long totalnum)
{
l_curpage = currentpage;
l_totalnum = totalnum;
if (currentpage>=0)
{
if (currentpage>=(long)Math.ceil((double)l_totalnum/(double)int_num))
l_curpage = (long)Math.floor((double)l_totalnum/(double)int_num);
else
l_curpage = currentpage;
}
else
{
l_curpage = 0;
}
l_start = l_curpage * int_num;
l_end = l_start + int_num;
if (l_end > l_totalnum)
l_end = l_totalnum;
l_totalpage = (long)Math.ceil((double)l_totalnum/(double)int_num);
}

public long getCurpage()
{
return l_curpage;
}

public long getPrepage()
{
if (l_curpage-1>=0)
{
return l_curpage-1;
}
else
{
return 0;
}
}

public long getNextpage()
{
if (l_curpage+1<=l_totalpage)
{
return l_curpage+1;
}
else
{
return l_totalpage;
}
}

public long getTotalnum()
{
return l_totalnum;
}

public long getTotalpage()
{
return l_totalpage;
}

public long getStart()
{
return l_start;
}

public long getEnd()
{
return l_end;
}
}
smartzhang 2002-12-10
  • 打赏
  • 举报
回复
小弟初学jsp,不太清楚楼上gg提的jdbc2.0,怎么用啊,也就是说,怎么改我的程序
zxhong 2002-12-10
  • 打赏
  • 举报
回复
用jdbc2.0
smartzhang 2002-12-10
  • 打赏
  • 举报
回复
是的,我是用的桥联接,要实现同样的功能,应该怎么改代码啊!
希偌 2002-12-10
  • 打赏
  • 举报
回复
估计你是使用jdbc:odbc驱动桥来连接数据库的,这种连接不支持.last,.first.previous等方法,仅仅支持.next()而已
或者
在建立Statement对象实例的时候参数不正确,如下
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
smartzhang 2002-12-10
  • 打赏
  • 举报
回复
<html>
<head>
<title>
留言内容
</title>
</head>
<body>
<table width="100%" height="39" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="39" bgcolor="#006699"><div align="center" class="title">客户留言簿</div></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="33%" height="20" class="title">□<a href="guesthome.jsp"><font size="1">开始留言</font></a> 
□<a href="manager.jsp"><font size="1">留言管理</font></a></td>
<td width="67%" class="title"><div align="center">pages:</div></td>
</tr>
</table>


<%@page contentType="text/html;charset=gb2312" language="java" import="java.sql.*"%>
<%@page session="true"%>

<jsp:useBean id="lyan" scope="page" class="sql_data.sql_data"/>
<%
//禁止Cache.
response.setHeader("Pragma","No-Cache");
response.setHeader("Cache-Control","No-Cache");
response.setDateHeader("Expires", 0);
%>

<%
int pageSize=4;
int rowCount=0; //总的记录数
String sqlcount="select count(*) as id from liuyan";
ResultSet rscount=lyan.executeQuery(sqlcount);
while (rscount.next()){
rowCount=rscount.getInt("id");
}
rscount.close();
int pageCount; //总的页数
int currPage; //当前页数
String strPage;
strPage=request.getParameter("page");
if (strPage==null){
currPage=1;
}
else{
currPage=Integer.parseInt(strPage);
if (currPage<1) currPage=1;
}
pageCount=(rowCount+pageSize-1)/pageSize;
if (currPage>pageCount)
currPage=pageCount;
int thepage=(currPage-1)*pageSize;
int n=0;
String str="SELECT * FROM liuyan order by date desc";
ResultSet rs=lyan.executeQuery(str);
rs.absolute(thepage+1);
while(n<(pageSize)&&!rs.isAfterLast())
{
String userid=rs.getString("userid");
String email=rs.getString("email");
String address=rs.getString("address");
String date=rs.getString("date");
String sex=rs.getString("sex");
out.print("<table width=\"100%\" height=\"46\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#000033\">");
out.print("<tr>");
out.print("<td width=\"12%\" rowspan=\"2\" align=\"center\" bgcolor=\"#CCCCCC\">");
if(sex.equals("男")){%>
<span class="title2"><img src="D:\Apache Tomcat\webapps\ROOT\web\liuyan\image\IMAGE6.GIF" width="32" height="32"><br>
<% }
else
{%>
<span class="title2"><img src="D:\Apache Tomcat\webapps\ROOT\web\liuyan\image\IMAGE5.GIF" width="32" height="32"><br>
<%}
out.print("</span>");
out.print("<br>");
out.print("<b>");
out.print(rs.getString("realname"));
out.print("</b>");
out.print("<span class=\"title2\"> </span></td>");
%>
<td height="10" bgcolor="#e7e7e7">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="15%">
帐号:
<%=userid%>
</a>
</td>
<td width="22%">
Email:<a href="mailto:<%=email%>" target="_blank">
<%=email%>
</a>
</td>
<td width=25%>
地址:
<%=address%>
</a>
</td>
<td width="32%">
留言时间:
<%=date%>
</td>
</tr>
</table></td>

<%
out.print("</tr>");
out.print("<tr>");
out.print("<td height=\"20\" colspan=\"4\" style=\"word-break:break-all\" bgcolor=\"#CCCCCC\">");
out.print(rs.getString("words"));
out.print("</td>");
out.print("</tr>");
out.print("</table>");

rs.next();
n++;
}
rs.close();
%>
第<%=currPage%>页 共<%=pageCount%>页 共<%=rowCount%>条
<%if(currPage>1){%>
<a href="lyan.jsp?<%=currPage%>">首页</a>
<%}%>
<%if(currPage>1){%>
<a href="lyan.jsp?page=<%=currPage-1%>">上一页</a>
<%}%>
<%if(currPage<pageCount){%>
<a href="lyan.jsp?page=<%=currPage+1%>">下一页</a>
<%}%>
<%if(pageCount>1){%>
<a href="lyan.jsp?page=<%=pageCount%>">尾页</a>
<%}%>
<form name="page" method="post" action="lyan.jsp" >
跳到<input type="text" name="page" size="4" style="font-size:9px">页
<input type="submit" name="submit" size="4" value="GO" style="font-size:9px">
</form>




</body>
</html>
smartzhang 2002-12-10
  • 打赏
  • 举报
回复
没有人回答了吗?虽然我已经分页了,但我还是想知道上面的问题答案啊

81,094

社区成员

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

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