db.query的使用

首先假设有如下表格,表格名称为:"Employees"


SQL基本格式如下

[sql]  view plain  copy
 print ?
  1. select 列名称 from 表名称  

最基本SQL语句,就是从表中选取要返回的列数据,不加任何过滤条件。当然如果"列名称"是"*",那么将返回整个表格数据。在Android上,SQL相关的method通常有一个参数就是String[] columns,而这个参数对应的就是SQL语句中的"列名称"。可以看一下Android中的method-query:

[java]  view plain  copy
 print ?
  1. Cursor query(boolean distinct, String table, String[] columns,  
  2.             String selection, String[] selectionArgs, String groupBy,  
  3.             String having, String orderBy, String limit)   

各个参数的意义说明:
①table:表名称
②columns:列名称数组
③selection:条件字句,相当于where
④selectionArgs:条件字句,参数数组
⑤groupBy:分组列
⑥having:分组条件
⑦orderBy:排序列
⑧limit:分页查询限制

假设想获取人员的全名,那么SQL语句如下:

[sql]  view plain  copy
 print ?
  1. select FirstName, LastName from Employees  

当然一般地会有条件的过滤,得到自己想要的结果,例如只想返回city为Beijing的人员信息,那么就需要用where来过滤:

[sql]  view plain  copy
 print ?
  1. select * from Employees where City= 'Beijing'  
这里where后面跟的字符串就是Android的method中对应的参数String select。Android的method中通常还有个参数于此相关就是String[] selectionsArgs,当selection参数中包含问号" ? "时,那么selectionArgs才会用到。举个例子,假设selection参数赋值如下:
[sql]  view plain  copy
 print ?
  1. String selection = "City=?";  
这时则必须在selectionArgs参数中赋值为如下:
[sql]  view plain  copy
 print ?
  1. String[] selectionArgs = {"Beijing"};  
也就是说selectionArgs中的字符串就是对应selection中的问号所代表的变量。实际上就是让selection中的过滤添加City可以动态的赋值,而不是写死在程序中。在query()执行时会对selectionArgs中的字符串正确转义并替换到对应的?问号处以构成完整的selection字符串,有点想String.format()。

那么和显然参数String groupBy就是对应SQL语句中的GROUP BY后面的字符串,GROUP BY是与合计函数(Aggregate Functions)如SUM()一起使用的。

参数String having对应SQL语句HAVING后面的字符串,也是要与合计函数一起使用的

参数String orderBy对应SQL语句ORDER BY后面的字符串

参数limit指明返回的rows的数量

你可能感兴趣的:(android)