Android SQLite 查询相关的笔记

            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语句应当是:

Sql代码   收藏代码
  1. SELECT CustomerName, SUM(OrderPrice) FROM Orders WHERE Country=?   
  2. GROUP BY CustomerName   
  3. HAVING SUM(OrderPrice)>500  
  4. ORDER BY CustomerName  

 那么对应Android的query函数的参数如下:

Java代码   收藏代码
  1. String table = "Orders";  
  2. String[] columns = new String[] {"CustomerName""SUM(OrderPrice)"};  
  3. String selection = "Country=?";  
  4. String[] selectionArgs = new String[]{"China"};  
  5. String groupBy = "CustomerName";  
  6. String having = "SUM(OrderPrice)>500";  
  7. String orderBy = "CustomerName";  
  8. Cursor c = db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy, null);   
OK ,笔记到此先结束。

你可能感兴趣的:(Android SQLite 查询相关的笔记)