<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>

解决方案 »

  1.   

    估计你是使用jdbc:odbc驱动桥来连接数据库的,这种连接不支持.last,.first.previous等方法,仅仅支持.next()而已
    或者
    在建立Statement对象实例的时候参数不正确,如下
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
      

  2.   

    小弟初学jsp,不太清楚楼上gg提的jdbc2.0,怎么用啊,也就是说,怎么改我的程序
      

  3.   

    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;
        }
    }
      

  4.   

    <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());
    }
    %>
      

  5.   

    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;
    }
    }
    }
      

  6.   

    以上是分页程序。含有BEAN的。你看看。这是MYSQL数据库的。已测试好使。
      

  7.   

    谢谢xcgh(晓刚) ,我已经用别的分页程序作出来了,可是我还是想要解决我上面遇到的问题,我想这样才可以有所提高啊。