SQLite查询分析几个参数就可以了,下面是参数列表。
public Cursor query(boolean isUnique,String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit)
下面是对这些参数的粗略解释:
boolean isUnique:一个可选的布尔值,用来说明返回的值是否只包含唯一的值。
String table:没什么好解释的,要查询的表名。
String[] columns:要查询的列,若为空,则查询所有的列。
String selection:一个“where”子句,定义了要返回的行,可以在其中包含?通配符,这个通配符将会被下一个参数即selectionArgs替换。
String[] selectionArgs:与上一个参数selection息息相关,用来通配上一个参数的?通配符。对于这两个参数,举一个例子:
有这样一句SQL语句:SELECT * FROM Employees WHERE City='Beijing',我们将它转换为java语句。
String selection="City=?",这时候selectionArgs就能派上用场了,String[] selectionArgs={"Beijing"};
也就是说selectionArgs中的字符串就是对应selection中的问号所代表的变量。实际上就是让selection中的过滤条件City可以动态的赋值,而不是写死在程序当中。
继续解释下面的参数:
String groupBy:很显然就是对应SQL语句中GROUP BY后面的字符串,GROUP BY是与合计函数(Aggregate Functions)如SUM()一起使用的。
String having:对应SQL语句HAVING后面的字符串,也是要与合计函数一起使用的。
String orderBy:用来表述返回的行的顺序。
String limit:一个可选的参数,用来定义对返回的行的限制。
对以上几个参数,用一个例子简单说明下:
假设有如下数据表,表名"Orders":
Id | CustomerName | OrderPrice | Country | OrderDate |
1 | Arc | 100 | China | 2010/1/2 |
2 | Bor | 200 | USA | 2010/3/20 |
3 | Cut | 500 | Japan | 2010/2/20 |
4 | Bor | 300 | USA | 2010/3/2 |
5 | Arc | 600 | China | 2010/3/25 |
6 | Doom | 200 | China | 2010/3/26 |
假设我们想查询客户总的订单数在500元以上的,且County在中国的客户的名称和订单总数,且按照CustomerName来排序,默认ASC排序,那么SQL语句应当是:
那么对应Android的query函数的参数如下: