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

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,问题引刃而解了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值