採用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();
}
}
sql

/** * 從數據庫中查詢全部記錄,而後經過遊標來獲取所需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(); } }
相關文章
相關標籤/搜索