首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

jdbc分页有关问题

2012-10-27 
jdbc分页问题?try {Class.forName(driverName)dbConn DriverManager.getConnection(dbUrl, dbUserName,

jdbc分页问题?
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;    }} 

热点排行