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