这个是用last(),getRow()获取结果集记录数的,希望改成用sql语句获取记录数的,小弟试了几次都有异常,希望大家帮下啊
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="ISO-8859-1"%>
<%
int i;
Connection conn;
Statement stmt;
Statement stmts;
ResultSet rs;
ResultSet rss;
int pageSize=5;
int rowCount=107;
int pageCount;
int intPage;
String strPage=request.getParameter("page");
if(strPage==null){
intPage=1;
}
else{
intPage=Integer.parseInt(strPage);
}
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:OCP","hr","ocp");
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//stmts=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery("select first_name from employees");
//rss=stmt.executeQuery("select count(*)from employees" );
rs.last();
rowCount=rs.getRow();
pageCount=(rowCount+pageSize-1)/pageSize;
if(intPage>pageCount)intPage=pageCount;
%>
<html>
<head>
<meta http-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<body topmargin="0"leftmargin="0"><table width="100%"><tr><td>
intPage<%=intPage %>/<%=pageCount%>page  <%=pageSize %>row/page
</td></tr></table>
<table width=100%>
<tr>
<td width=50%>firstname</td>
</tr>
<%
if(pageCount>0){
rs.absolute((intPage-1)*pageSize+1);
i=0;
while(i<pageSize&&!rs.isAfterLast()){
String name=rs.getString(1);
 %>
 <tr>
 <td width=50%><%=name%></td>
 </tr>
 <%
 rs.next();
 i++;
 }
 } %>
</table>
<%if(intPage>0){%>
<a href="DividePage.jsp?page=<%=intPage-1%>">lastpage</a>
<%}%>
<%if(intPage<pageCount)
{%>
<a href="DividePage.jsp?page=<%=intPage+1%>">nextpage</a>
<%}%>
</body>
</html>
<%
rs.close();
stmt.close();
conn.close();
%>

解决方案 »

  1.   

    select count(*) as num from employees  把sql换成这样试一下rs=stat.executeQuery(sql);
    int maxrow=0;
    if(rs.next())
    {
    maxrow=rs.getInt("num");
     return maxrow;

    }
      

  2.   

    怎么这两天都有分页问题啊
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>
    <html>
    <head>
    <title>分页显示</title>
    </head>
    <body>
    <center>
    <h1>人员列表</h1>
    <hr>
    <br>
    <%!
    final String jspUrl = "list_person_false_05.jsp" ;
    %>
    <%
    // 定义如下分页变量
    // 1、定义没页要显示的记录数
    int lineSize = 10 ;
    // 2、定义一个当前是第几页
    int currentPage = 1 ;
    // 计算出总页数
    int pageSize = 0 ;
    // 总记录数 / 每页显示的记录数
    int allRecorders = 30 ;
    %>
    <%
    // 接收传过来的当前页
    try
    {
    currentPage = Integer.parseInt(request.getParameter("cp")) ;
    }
    catch(Exception e)
    {}
    %>
    <%
    final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
    final String DBURL = "jdbc:mysql://localhost/mldn" ;
    final String DBUSER = "root" ;
    final String DBPASSWORD = "mysqladmin" ;
    Connection conn = null ;
    %>
    <%
    try
    {
    Class.forName(DBDRIVER) ;
    conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
    PreparedStatement pstmt = null ;
    String sql = "SELECT COUNT(id) from person" ;

    pstmt = conn.prepareStatement(sql) ;
    ResultSet rs = pstmt.executeQuery() ;
    if(rs.next())
    {
    allRecorders = rs.getInt(1) ;
    }
    rs.close() ;
    pstmt.close() ; // 计算总页数
    pageSize = (allRecorders+lineSize-1)/lineSize ; sql = "SELECT id,uid,name,password FROM person" ;
    pstmt = conn.prepareStatement(sql) ;
    rs = pstmt.executeQuery() ;
    %>
    <script language="javaScript">
    function openPage(curpage)
    {
    document.spage.cp.value = curpage ;
    // alert(cupage) ;
    document.spage.submit() ;
    }
    function selOpenPage()
    {
    document.spage.cp.value = document.spage.selpage.value ;
    document.spage.submit() ;
    }
    </script>
    <form name="spage" action="<%=jspUrl%>">
    <input type="button" value="首页" onClick="openPage(1)" <%=currentPage==1?"disabled":""%>>
    <input type="button" value="上一页" onClick="openPage(<%=currentPage-1%>)" <%=currentPage==1?"disabled":""%>>
    <input type="button" value="下一页" onClick="openPage(<%=currentPage+1%>)" <%=currentPage==pageSize?"disabled":""%>>
    <input type="button" value="尾页" onClick="openPage(<%=pageSize%>)" <%=currentPage==pageSize?"disabled":""%>>
    <input type="hidden" name="cp" value="">
    <font color="red" size="5"><%=currentPage%></font>
    /
    <font color="red" size="5"><%=pageSize%></font>
    跳转到
    <select name="selpage" onChange="selOpenPage()">
    <%
    for(int x=1;x<=pageSize;x++)
    {
    %>
    <option value="<%=x%>" <%=currentPage==x?"selected":""%>><%=x%></option>
    <%
    }
    %>
    </select>

    </form>
    <table border="1" width="80%">
    <tr>
    <td>编号</td>
    <td>登陆名称</td>
    <td>姓名</td>
    <td>密码</td>
    <td colspan="2">操作</td>
    </tr>
    <%
    int i = 0 ;
    for(int x=0;x<(currentPage-1)*lineSize;x++)
    {
    rs.next();
    }
    // 对于输出代码之前要求按显示的页数空出
    for(int x=0;x<lineSize;x++)
    {
    if(rs.next())
    {
    i++ ;
    int id = rs.getInt(1) ;
    String userid = rs.getString(2) ;
    String name = rs.getString(3) ;
    String password = rs.getString(4) ;
    %>
    <tr>
    <td><%=id%></td>
    <td><%=userid%></td>
    <td><%=name%></td>
    <td><%=password%></td>
    <td>更新</td>
    <td>删除</td>
    </tr>
    <%
    }
    }
    rs.close() ;
    pstmt.close() ;
    if(i==0)
    {
    %>
    <tr>
    <td colspan="6">没有任何数据!!</td>
    </tr>
    <%
    }
    %>
    </table>
    <%
    }
    catch(Exception e)
    {
    %>
    <h2>系统出错!!!</h2>
    <%
    }
    finally
    {
    conn.close() ;
    }
    %>
    </center>
    </body>
    </html>
    楼主参考一下吧
      

  3.   

    使用了Ajax技术的分页:
    <%@ page contentType="text/html;charset=GBK"%>
    <%@ page language="java" import="java.sql.*"%> <script language="javascript"> 
    function newwin(url) { 
    var 

    newwin=window.open(url,"newwin","toolbar=no,location=no,directories=no,status=no, 

    menubar=no,scrollbars=yes,resizable=yes,width=600,height=450"); 
    newwin.focus(); 
    return false; 

    </script>
    <script LANGUAGE="javascript"> 
    function onclick1() 

    var page = document.form1.page.value
      sendRequest('Servelet/PageServelet?page='+page);  //发送请求的页面


    function sendRequest(url) {
    alert("---7---");
    createXMLHttpRequest();
    XMLHttpReq.open("GET", url, true);
    XMLHttpReq.send(null);
    XMLHttpReq.onreadystatechange = processResponsepage;
    }

    function createXMLHttpRequest(){
        if(window.XMLHttpRequest) { 
    XMLHttpReq = new XMLHttpRequest();
    }else if (window.ActiveXObject) { 
    try {
    XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
    XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {
        }
        }
    }
    }

    function processResponsepage(){
         if(XMLHttpReq.readyState==4){//服务器已返回信息
          alert("---4---");
     if(XMLHttpReq.status==200){
     alert("---8---"); 
               var page = XMLHttpReq.responseXML.getElementsByTagName("page")[0].firstChild.data; 
               window.open('index.jsp');  
            }
         }
    }
    </script>
    <%
    //变量声明 
    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 = 6;
    //取得待显示页码 
    strPage = request.getParameter("page");

    if (strPage == null) {//表明在QueryString中没有page这一个参数,此时显示第一页数据 
    intPage = 1;
    } else {//将字符串转换成整型 

    intPage = java.lang.Integer.parseInt(strPage);
    if (intPage < 1){
    intPage = 1;
    }
    } //装载JDBC驱动程序 
    Class.forName("oracle.jdbc.driver.OracleDriver");
    //设置数据库连接字符串 
    strCon = "jdbc:oracle:thin:@localhost:1521:zhoulin";
    //连接数据库 
    sqlCon = java.sql.DriverManager.getConnection(strCon, "zhoulin",
    "zhoulin");
    //创建一个可以滚动的只读的SQL语句对象 
    sqlStmt = sqlCon.createStatement(
    java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
    java.sql.ResultSet.CONCUR_READ_ONLY);//准备SQL语句 
    strSQL = "select id,names from students order by id desc";
    //执行SQL语句并获取结果集 
    sqlRst = sqlStmt.executeQuery(strSQL);
    //获取记录总数 
    sqlRst.last();//光标在最后一行 
    intRowCount = sqlRst.getRow();//获得当前行号 
    //记算总页数  =(当前行号+每页定义显示的记录数-1)/每页定义显示的记录数
    intPageCount = (intRowCount + intPageSize - 1) / intPageSize;
    //调整待显示的页码 
    if (intPage > intPageCount) {
    intPage = intPageCount;
    }
    %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GBK">
    <title>分页使用</title>
    </head>
    <body>
    <form method="POST" action="pagefrist.jsp" name = "form1">

    <%=intPage%>
    页 共
    <%=intPageCount%>
    页 <%
    if (intPage < intPageCount) {
    %>
    <a href='pagefrist.jsp?page=<%=intPage + 1%>'>下一页 </a>

    <%
    }
    %>
    <%
    if (intPage > 1) {
    %>
    <a href="pagefrist.jsp?page=<%=intPage - 1%>"> 上一页</a>
    <%
    }
    %>
    转到第:
    <input type="text" name="page" size="8">

    <span><input  type='button' onClick = "onclick1()" value='GO' name='cndok'> </span>
    </form>
    <table border="1" cellspacing="0" cellpadding="0">
    <tr>
    <th width='50%'>
    ID
    </th>
    <th width='50%'>
    用户名
    </th>
    </tr>
    <%
    if (intPageCount > 0) {
    //将记录指针定位到待显示页的第一条记录上 (怎么使用的)
    sqlRst.absolute((intPage - 1) * intPageSize + 1);
    //显示数据 
    i = 0;
    String user_id, user_name;
    while (i < intPageSize && !sqlRst.isAfterLast()) {
    user_id = sqlRst.getString(1);
    user_name = sqlRst.getString(2);
    %>
    <tr>
    <td>
    <%=user_id%>
    </td>
    <td>
    <%=user_name%>
    </td>
    </tr>
    <%
    sqlRst.next();
    i++;
    }
    }
    %>
    </table>
    </body>
    </html>
    <%
    //关闭结果集 
    sqlRst.close();
    //关闭SQL语句对象 
    sqlStmt.close();
    //关闭数据库 
    sqlCon.close();
    %>
      

  4.   

    不要用ResultSet的last()和getRow()的
    用sql
    select count(1)from table_name;
      

  5.   

    开始我就改成2楼的获取记录数但是改完就有问题了ResultSet的absolut方法就开始有异常了
    rs.absolute((intPage-1)*pageSize+1);
    就是这句