标签:
1,一共多少条数据
select count(*) from blacktb;
性能低下
原因: sql解析器先查询数据字典,把*转成所有的列名和列的类型
然后把每行数据提取出来
最后统计多少行数据
select count(常量) from blacktb;
高性能的查询
不需要每行的记录,只需要行数
2,指定每页显示多少条
需求制定每页行数 如: 20
3,计算出共多少页
int pages = (int)Math.ceil(201 * 1.0 / 20); // 10.05
4,取每页的信息 3页的数据
select * from blacktb limit 取多少条 offset 从哪条数据;
select * from blacktb limit 行的起始位置 , 多少条数据;
如:取第3页 PageNumber每页显示多少条数据
select * from blacktb limit (3 - 1)*PageNumber,PageNumber
/** * @return 总数据个数 */ public int getTotalRows() { SQLiteDatabase database = blackDB.getReadableDatabase(); Cursor cursor = database.rawQuery("select count(1) from " + BlackTable.BLACKTABLE, null); cursor.moveToNext(); // 总行数 int totalRows = cursor.getInt(0); cursor.close();// 关闭游标 return totalRows; } /** * @param currentPage * 当前页的页码 * @param perPage * 每页显示多少条数据 * @return 当前页的数据 */ public List<BlackBean> getPageDatas(int currentPage, int perPage) { List<BlackBean> datas = new ArrayList<BlackBean>(); SQLiteDatabase database = blackDB.getReadableDatabase(); // 获取blacktb的所有数据游标 (2 + 3) + "" Cursor cursor = database.rawQuery("select " + BlackTable.PHONE + "," + BlackTable.MODE + " from " + BlackTable.BLACKTABLE + " limit ?,? ", new String[] {((currentPage - 1) * perPage) + "",perPage + ""}); while (cursor.moveToNext()) { // 有数据,数据封装 BlackBean bean = new BlackBean(); // 封装黑名单号码 bean.setPhone(cursor.getString(0)); // 封装拦截模式 bean.setMode(cursor.getInt(1)); // 添加数据到集合中 datas.add(bean); } cursor.close();// 关闭游标 database.close();// 关闭数据库 return datas; } /** * @param perPage * 指定每页显示多少条数据 * @return 总页数 */ public int getTotalPages(int perPage) { int totalRows = getTotalRows(); // 计算出多少页,采用ceil函数,返回不小于该数的最小整数 如 :6.1 返回7.0 int totalPages = (int) Math.ceil(totalRows * 1.0 / perPage); return totalPages; }
标签:
原文地址:http://blog.csdn.net/qq_32059827/article/details/51922592