1. 程式人生 > >Android—SQlite資料庫提高篇之資料庫分頁查詢

Android—SQlite資料庫提高篇之資料庫分頁查詢

 根據此方法來確定資料庫總資料可以最多分幾頁進行查詢

引數:page_size:是一頁查詢資料的數量

type,vid:是查詢資料庫的條件,根據這些條件查詢來確定資料庫中查詢資料的總數。

private int getMaxPageSize(int page_size,String type,String vid){

opendb(); //開啟資料庫
StringBuffer sql_page=new StringBuffer("select count(*) from wonder_classphoto_tb where user_id=? and type=? and ");

if(TextUtils.equals(type, HUODONG)){
sql_page.append("class_id=?");
}else{
sql_page.append("child_id=?");
}

Cursor cursor_page=db.rawQuery(sql_page.toString(), new String[]{user_id,type,vid});

cursor_page.moveToLast(); //將查詢資料庫的遊標移動到最後一行
int all_bean=cursor_page.getInt(0); //獲取總資料有多少行資料
cursor_page.close(); //關閉遊標
closedb(); //關閉資料庫
int max_page_size=all_bean/page_size+1; //獲取分頁頁面總數
return max_page_size;
}



/**
* type :huodong
* :chengzhang
* @param type
* @param id 
*/
public void getList(List list,String type,String vid,int page_index,int page_size){
int max_page_size=getMaxPageSize(page_size,type,vid);
if(page_index>max_page_size)page_index=max_page_size; //如果當前請求資料的頁數大於資料庫分頁總數則page_index=max_page_size
opendb();
StringBuffer sql=new StringBuffer("select * from wonder_classphoto_tb where type=? and user_id=? and ");
if(TextUtils.equals(type, HUODONG)){
sql.append("class_id=?");
}else{
sql.append("child_id=?");
}
sql.append(" order by create_time desc limit "+page_size+" offset "+(page_index-1)*page_size);//查詢的資料page_size,(page_index-1)*page_size",查詢結果中以第
(page_index-1)*page_size)條記錄為基準(包括第(page_index-1)*page_size)條),返回page_size行資料

Cursor cursor=db.rawQuery(sql.toString(), new String[]{type,user_id,vid});
while(cursor.moveToNext()){
String id=cursor.getString(WonderShowDBHelper.server_id_cp);
String create_time=cursor.getString(WonderShowDBHelper.create_time_cp);
String title=cursor.getString(WonderShowDBHelper.title_cp);
String logo_url=cursor.getString(WonderShowDBHelper.logo_url_cp);
String remark=cursor.getString(WonderShowDBHelper.remark_cp);
String child_count=cursor.getString(WonderShowDBHelper.child_count_cp);
PhotoAlbumBean bean=new PhotoAlbumBean(id, create_time, title, logo_url, remark, child_count);
if(list.contains(bean)){
list.remove(bean);
}
list.add(bean);
}
cursor.close();
closedb();

}

2.00000000000000000000000000000000000

 //查詢資料
    private void query(int pageNo){
     mSqLiteDatabase=mMySQLiteOpenHelper.getReadableDatabase();
     Cursor cursor=null;
     if(isfirst){
      cursor= mSqLiteDatabase.query(TableName, null, null,
       null,null, null, null, null);
      pageCount=cursor.getCount()/limit+1; //pageCount獲取分頁頁面總數
      isfirst=false;
     }
      cursor= mSqLiteDatabase.query(TableName, null, null,
            null,null, null, null, limit*(pageNo-1)+","+limit);//"5,9",標誌從第下標為5的行開始,返回9行資料
       System.out.println(limit*(pageNo-1)+"--=--"+limit*pageNo);
     s
     setpageNo(pageNo);
     setAdapter(cursor);

    }