Sqlite(1)之分页查询

转载地址:http://blog.csdn.net/lu1024188315/article/details/51734514


SQLite分页查询有三种方法,它们都是基于SQLite SQL查询来的,首先我们看下SQLite分页查询的SQL语句,有助于我们理解:


1

2

3

4

5

6

#查询第一行起的5行数据,可以有两种语句:

#第一种语句:

select

*
from

T_user limit 5 offset 0;

 

#第二种语句:

select

*
from

T_user limit 0,5;

然后,回来过头看分页查询方法:

方法一:使用SQLiteDatabase.rawQuery()方法,这是网上介绍得最多的方法,因为直接写SQL语句,所以两种SQL语句它都支持,示例如下:

1

2

String
sql=
"select
* from table Limit 100 Offset 2"
;   

Cursor
rec = db.rawQuery(sql,
null );

方法二:使用SQLiteDatabase.query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit) ,它是基于第二种SQL语句的。这个google出来,好像比较少介绍,不知道为什么。我更倾向于这种方法,能够使用Android API提供的简便方法,就使用简便方法,除非它不能满足功能需求,这也是我写代码的原则


1

2

3

4

5

6

7

8

9

10

11

12

/**

*
table="表命",

*
columns="要查询的列名",

*
selection="查询 条件",

*
selectionArgs="条件中用了占位符的参数",

*
groupBy="数据分组",

*
having="分组后的条件",

*
orderBy="排序方式",

*
limit="分页查询"; 

**/

cursor=
db.query(TableName,
null ,
null ,

             null , null ,
null ,
null ,
"5,9" ); //"5,9",第6行开始,返回9行数据

方法三:使用SQLiteDatabase.query(table, columns, selection, selectionArgs, groupBy, having, orderBy),看到这方法是不是觉得就比方法二少了limit参数,少了limit参数还怎么分页啊。少了limit参数,把分页语句写orderBy里面照样能分页。这是个歪招,利用了SQLiteDatabase最后要把所有的查询转换SQL语句来执行的机制,也算一种SQL注入吧,所以它两种SQL语句都支持。这个方法写在这里是为了加深对SQLiteDatabase SQL操作的理解,非特别需求不建议使用,代码示例如下:


1

2

3

//根据clumn1列降序排序,同时带了分页查询:第6行起查询9行数据

cursor
= db.query(tableName, columns, null, null, null, null,

                       "clumn1
desc limit 9 offset 5"
);
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值