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
------解决方案--------------------------------------------------------
应该不是这行的错吧。。。
应给类似下面的代码。。。
String s = "abc";
System.out.println(s.substring(2,1)) ;
会报
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
------解决方案--------------------------------------------------------
分页不是使用 CachedRowSet 提供的方法吗
------解决方案--------------------------------------------------------
就是,都不知道你写分页的代码,就像这句rs = sta.executeQuery(sqlSbs+" where rownum >"+start+" and rownum<"+limit);
sqlSbs里面的内容是什么啊
------解决方案--------------------------------------------------------
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分页特定方法~
------解决方案--------------------------------------------------------
重新弄一个statement吧。
sta1 = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = sta.executeQuery(sqlSbs+" where rownum >"+start+" and rownum<"+limit);
------解决方案--------------------------------------------------------
详情点击
http://blog.csdn.net/yao__shun__yu/article/details/7960373
- Java code
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; }}