安卓学习笔记(2)- SQLite中使用query函数对某类数据进行排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kabuto_hui/article/details/78062953

1.在安卓的帮助文档中,query函数的相关内容如下:

这里写图片描述

其中各个参数的含义为:

table 需要进需要行操作的表的名称

columns 需要查询的列,如String[]{“name”,”sex”},表示的是查询name和sex两个列

selection 查询的条件子句,如”name = \”Tom\”“,表示只查询name这列中Tom的数据

​ 如果写法是“name=?”,表示使用占位符,具体的查询的子条件在selectionArgs中体现

selectionArgs 与selection中的?占位符相对应,如:new String[]{“Tom”,”Jerry”},表示查询name列中的

​ Tom和Jerry的数据,这样操作可以防止SQL注入攻击

groupBy 用于设定返回行的分组方式,相当于SQL语句中的GROUP BY 关键字。传递null表示返回的

​ 行不会被分组。

having 决定哪一行被放到Cursor中的过滤器。如果使用了行分组,相当于SQL语句中的HAVING关

​ 键字。传递null会导致所有的行都包含在内,前提是groupBy属性也设置为null。

orderBy 用于排序

排序操作:就是填充最后一个字段**

填充规则就“ 列名   desc”,其中desc表示降序排列,asc是升序排列

如“name desc”就是对name的数据进行升序排列。

2.遇到的问题

排序报错:

排序之后的结果是721 520 120 1456 1234 1101

大概就是相同长度的数字进行排序,而总体没有进行排序,就会出现较大的数字没有出现在靠前的位置上。

报错原因:

我在设置表参数的时候,将数据类型设置成了TEXT DEFAULT了,对于TEXT DEFAULT的排序是按照text字段的首字符进行排序的,因而会出现排序不正确的现象。

解决方式:

我将数据类型改为了整形,即INTEGER,问题引刃而解了。

展开阅读全文

没有更多推荐了,返回首页