try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbUrl, dbUserName, dbPass);
sta = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

rs = sta.executeQuery(sqlSbs);
rs.last();
total=rs.getRow();
rs = sta.executeQuery(sqlSbs+" where rownum >"+start+" and rownum<"+limit);
rs = sta.executeQuery(sqlSbs+" where rownum >"+start+" and rownum<"+limit);
这句有什么问题么?报错:exception:String index out of range: -1

解决方案 »

  1.   

    应该不是这行的错吧
    应给类似下面的代码 String s = "abc";
    System.out.println(s.substring(2,1)) ;会报
    java.lang.StringIndexOutOfBoundsException: String index out of range: -1
      

  2.   

    分页不是使用 CachedRowSet 提供的方法吗
      

  3.   

    楼主可以把代码全贴出来,如果楼主的sql是类似这样写里
    select * from accounts where rownum>10 and rownum<20
    那肯定是查不出记录里
      

  4.   

    就是,都不知道你写分页的代码,就像这句rs = sta.executeQuery(sqlSbs+" where rownum >"+start+" and rownum<"+limit);
    sqlSbs里面的内容是什么啊
      

  5.   

    int sum = start +limit;
    String sqls="SELECT * FROM(SELECT A.*,ROWNUM RN FROM("+sqlSbs+") A where ROWNUM <="+sum+") WHERE RN >"+start;
    rs = sta.executeQuery(sqls);//只能执行变量oracle分页特定方法~
      

  6.   

    重新弄一个statement吧。
    sta1 = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    rs = sta.executeQuery(sqlSbs+" where rownum >"+start+" and rownum<"+limit);
      

  7.   

    详情点击
    http://blog.csdn.net/yao__shun__yu/article/details/7960373
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;import com.aps.db.conn.OracleConn;public class CopyLimit { private Connection conn;
    private PreparedStatement ps;
    private ResultSet rs;
    private String table;
    public String getTable() {
    return table;
    }
    public void setTable(String table) {
    this.table = table;
    }

    /**
     * 定义分页信息
     * pageSize 每页5条记录
     * pageNum 每页5个小分页项
     * */
    public final static String pageSize = "5";
    public final static String pageNum = "5";

    /********************************
     * 模仿limit
     * @param table 表名
     * @param odby  以谁排序、建议id
     * @param start 从数字几开始 1代表第一条数据
     * @param sum   取出多少数据
     * @throws SQLException 
     ********************************/
    public ResultSet doLimit(String table,String odby,String start,String sum) throws SQLException{
    /*这样保证table能被下面用*/
    this.table = table;
    setTable(table);
    String sql =  "select a.* from "+table+" a where rowid in (" +
    "select rd from (" +
    "select rownum rm,rd from (" +
    "select rowid rd from "+table+" order by "+odby+") where rownum <= ?+?) where rm > ?)";
    /*获得连接*/
    conn = OracleConn.getConn();
    ps = conn.prepareStatement(sql);

    //起始位置
    start = String.valueOf((Integer.parseInt(start) - 1) * Integer.valueOf(pageSize));
    //赋值
    ps.setString(1, start);
    ps.setString(2, sum);
    ps.setString(3, start);
    return ps.executeQuery();
    }
    /**
     * 视图里面不能用rowid所以单写出来一个rownum分页
     * @param table
     * @param start
     * @param sum
     * @return
     * @throws SQLException
     */
    public ResultSet doVLimit(String table,String odby,String start,String sum) throws SQLException{
    /*这样保证table能被下面用*/
    this.table = table;
    setTable(table);
    String sql =  "select v.* from (" +
    "select rownum rm,v.* from "+table+" v " +
    "where rownum <= ?+? order by "+odby+") v where rm > ?";
    /*获得连接*/
    conn = OracleConn.getConn();
    ps = conn.prepareStatement(sql);

    //起始位置
    start = String.valueOf((Integer.parseInt(start) - 1) * Integer.valueOf(pageSize));
    //赋值
    ps.setString(1, start);
    ps.setString(2, sum);
    ps.setString(3, start);
    return ps.executeQuery();
    }
    /**
     * 获得总数据条数
     * @return
     * @throws SQLException
     */
    public String doCount() throws SQLException{
    String count = "";
    conn = OracleConn.getConn();
    ps = conn.prepareStatement("select count(*) from "+getTable());
    rs = ps.executeQuery();
    if(rs.next()){
    count = rs.getString(1);
    }

    return count;
    }
    /**********************
     * 获取到能分出来多少页
     * @throws SQLException 
     **********************
     */

    public String doPageS() throws SQLException{
    String pages = doCount();
    double pc = Double.parseDouble(pages)/5.0;
    if(pc*10%10 > 0){
    pc = (int)pc+1;
    }
    pages = String.valueOf((int)pc);
    return pages;
    }
    }