JDBC使用游標實現分頁查詢的方法


本文實例講述了JDBC使用游標實現分頁查詢的方法。分享給大家供大家參考,具體如下:

/**
* 一次只從數據庫中查詢最大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:可滾動。但是不受其他用戶對數據庫更改的影響。
//    ResultSet.TYPE_SCROLL_SENSITIVE:可滾動。當其他用戶更改數據庫時這個記錄也會改變。
//   能否更新記錄:
//    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();
 }
}
/**
* 從數據庫中查詢所有記錄,然后通過游標來獲取所需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();
 }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM