真分頁:每次從數(shù)據(jù)庫里按照排序方法,取一段數(shù)據(jù),比如每頁20條,第一頁就是1-20 ,第二頁就是21-40。它是每次都從數(shù)據(jù)庫里查詢。都是最新的。假分頁:一次從數(shù)據(jù)庫里得到很多頁的數(shù)據(jù),然后緩存起來。比如每頁20條,一次取了100條,緩存起來。第一頁依然是1-20 ,第二頁就是21-40。到第6頁的時(shí)候,再?gòu)臄?shù)據(jù)庫里取101-200條,在緩存起來。只不過,取數(shù)據(jù)的時(shí)候不是從數(shù)據(jù)庫里取了,而是在緩存里取。但是這個(gè)數(shù)據(jù)有可能不是最新的,因?yàn)椴皇侵苯訌臄?shù)據(jù)庫里查詢的。這種多用在更新不多的數(shù)據(jù)上。
10年積累的網(wǎng)站建設(shè)、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有合江免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
通過rs.next()進(jìn)行分頁,首先用rs.absolute(0)定位到某條記錄。然后循環(huán)取數(shù)例如:1-10 可以for(int i=0;i10;i++){rs.next()}
import java.sql.*;
public class javaBeanBO {
private ResultSet rs=null;
private Connection ct=null;
private PreparedStatement ps=null;
/**
*
* @param pageSize
* @return
*/
public int getPageCount(int pageSize){ //int pageSize每頁顯示多少條信息
int pageCount=0;//共有多少頁
int rowCount=0;//共有多少條信息
try {
//連接數(shù)據(jù)庫
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=movie","sa","111111");//movie是數(shù)據(jù)庫,sa是賬號(hào),111111是密碼
//查詢數(shù)據(jù)庫
ps=ct.prepareStatement("select count(*) from message");//message是查詢的表
rs=ps.executeQuery();
while(rs.next()){
//得到共有多少條信息數(shù)
rowCount=rs.getInt(1);
}
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.close();
}
//返回共有多少頁
return pageCount;
}
public void close(){
try {
if(rs!=null){
rs.close();
rs=null;
}
if(ps!=null){
ps.close();
ps=null;
}
if(ct!=null){
ct.close();
ct=null;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}