欢迎投稿

今日深度:

Android SQLite分页查询的三种方法,androidsqlite

Android SQLite分页查询的三种方法,androidsqlite


  闲话不多说,直入话题,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");

www.htsjk.Com true http://www.htsjk.com/SQLite/32360.html NewsArticle Android SQLite分页查询的三种方法,androidsqlite   闲话不多说,直入话题,SQLite分页查询有三种方法,它们都是基于SQLite SQL查询来的,首先我们看下SQLite分页查询的SQL语句,有助于我们理...
相关文章
    暂无相关文章
评论暂时关闭