本文實例講述了JDBC使用游標實現(xiàn)分頁查詢的方法。分享給大家供大家參考,具體如下:
/** * 一次只從數(shù)據(jù)庫中查詢最大maxCount條記錄 * @param sql 傳入的sql語句 * @param startNo 從哪一條記錄開始
* @param maxCount 總共取多少條記錄 */ public void getData(String sql,int startNo,int
maxCount){ Connection conn = ConnectionUtil.getConnection(); try { //
conn.prepareStatement(sql,游標類型,能否更新記錄); // 游標類型: //
ResultSet.TYPE_FORWORD_ONLY:只進游標 //
ResultSet.TYPE_SCROLL_INSENSITIVE:可滾動。但是不受其他用戶對數(shù)據(jù)庫更改的影響。 //
ResultSet.TYPE_SCROLL_SENSITIVE:可滾動。當其他用戶更改數(shù)據(jù)庫時這個記錄也會改變。 // 能否更新記錄: //
ResultSet.CONCUR_READ_ONLY,只讀 // ResultSet.CONCUR_UPDATABLE,可更新
PreparedStatement pstat =
conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//最大查詢到第幾條記錄 pstat.setMaxRows(startNo+maxCount-1); ResultSet rs =
pstat.executeQuery(); //將游標移動到第一條記錄 rs.first(); // 游標移動到要輸出的第一條記錄
rs.relative(startNo-2); while(rs.next()) System.out.println(rs.getInt(1)); }
catch (SQLException e) { e.printStackTrace(); } } /** *
從數(shù)據(jù)庫中查詢所有記錄,然后通過游標來獲取所需maxCount條記錄 * @param sql 傳入的sql語句 * @param startNo
從哪一條記錄開始 * @param maxCount 總共取多少條記錄 */ public void getDataFromAll(String
sql,int startNo,int maxCount){ Connection conn =
ConnectionUtil.getConnection(); try { PreparedStatement pstat =
conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = pstat.executeQuery(); rs.first(); rs.relative(startNo-1); int i
= startNo-1; while(i < startNo + maxCount-1 && !rs.isAfterLast()){
System.out.println(rs.getInt(1)); i++; rs.next(); } } catch (SQLException e) {
e.printStackTrace(); } }
?
熱門工具 換一換