java.sql.SQLException: Before start of result set
at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.java:687)
at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:2367)
at com.song.UserBeanCl.getPageCounter(UserBeanCl.java:95)
at com.servlet.UserServlet.doGet(UserServlet.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

    忘记写next方法??????
    没取到当前记录
      

  2.   

    先执行结果集的rs.next()方法,再取值!
      

  3.   

    我是这样做的啊
    package com.song;import java.sql.*;
    import java.util.*;public class UserBeanCl {

    private Connection conn=null;
    private Statement st=null;
    private ResultSet rs=null;
    private int rowCounter=0;//存放总的记录数
        private int pageCounter=0;//存放总的页数
        private int grade=0;

    //验证用户是否合法的方法
    public boolean checkUser(String name,String pass){
    boolean b=false;

    try{

    DBconn db=new DBconn();
    conn=db.getConnection();
    st=conn.createStatement();
    String sql="select passW,grade from user where name='"+name+"'";
    rs=st.executeQuery(sql);
    if(rs.next()){
    if(pass.equals(rs.getString(1))){
    b=true;
    grade=rs.getInt(2);
    }
    }
    }catch(SQLException e){
    e.printStackTrace();
    }finally{
    this.close();
    }
    return b;
    }

    //分页方法
        public Vector split(int pageSize,int pageNow ){
        Vector v=new Vector();
        
    try{

    DBconn db=new DBconn();
    conn=db.getConnection();

    st=conn.createStatement();
    String sql2="select id,name,tel from friends limit "+(pageNow-1)*pageSize+","+pageSize;
    rs=st.executeQuery(sql2);
    while(rs.next()){
    UserBean ub=new UserBean();
    ub.setId(rs.getInt(1));
    ub.setName(rs.getString(2));
    ub.setTel(rs.getString(3));
    v.add(ub);
    }
    }catch(SQLException e){
    e.printStackTrace();
    }finally{
    this.close();
    }
        
        return v;
        }
        public void close(){
         try{
    if(rs!=null){
    rs.close();
    rs=null;
    }
                if(rs!=null){
    st.close();
    st=null;
    }
                if(rs!=null){
    conn.close();
    conn=null;
    }
    }catch(SQLException e){
    e.printStackTrace();
    }
        }
        public int getPageCounter(int pageSize){
         try{
        
         //获取数据库中的记录数
             DBconn db=new DBconn();
         conn=db.getConnection();
         st=conn.createStatement();
         String sql1="select count(*) from friends";
         rs=st.executeQuery(sql1);
         rowCounter=rs.getInt(1);
         }catch(SQLException e){
         e.printStackTrace();
         }finally{
         this.close();
         }
        
         if(rowCounter%pageSize==0){
         pageCounter=rowCounter/pageSize;
         }
         if(rowCounter%pageSize!=0){
         pageCounter=rowCounter/pageSize+1;
         }
         return pageCounter;
        }
        public int getGrade(){
         return grade;
        }
    }
      

  4.   

    prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    没有设置游标为可以滚动