2014-11-22 66 views
0

我使用的查询:Android的查询参数

return mDB.query(DATABASE_TABLE, new String[] { 
    FIELD_ROW_ID, 
    FIELD_NAME, FIELD_LAT, 
    FIELD_LNG, FIELD_BEAR, 
    FIELD_BOOMWIDTH, 
    FIELD_COMMENTS, FIELD_ZOOM } , null, null, null, FIELDSELECTION , null); 

参数提示说:

public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) 

参数:

表名编译针对的查询。

名单,其中列返回。传递null将返回所有列,这是不鼓励的,以防止从将不会使用的存储读取数据。

选择

的过滤器声明返回哪些行,格式化为SQL WHERE子句(不包括WHERE本身)。传递null将返回给定表的所有行。

selectionArgs两个

您可能包括哪些内容?S IN的选择,这将是从selectionArgs两个,价值观,他们出现在选择更换秩序。这些值将被绑定为字符串。

GROUPBY

的过滤器声明如何对行分组,格式化为SQL GROUP BY子句(不包括GROUP BY本身)。传递null将导致行不被分组。

具有

甲滤波器DECLARE行组以包括光标,如果正在使用行分组,格式化为SQL HAVING子句(不包括HAVING本身)。传递null将导致包含所有行组,并且在不使用行分组时需要。

排序依据

如何对行进行排序,格式化为一个SQL ORDER BY子句(不包括ORDER BY本身)。传递null将使用默认的排序顺序,这可能是无序的。

问题:

究竟云在GROUPBY和发生的事情在。我有列

  • FIELD_ROW_ID
  • FIELD_NAME
  • FIELD_LAT
  • FIELD_LNG
  • FIELD_BEAR
  • FIELD_BOOMWIDTH
  • FIELD_COMMENTS
  • FIELD_ZOOM表。

我想查询所有由我的微调器选择的具有某个FIELD_NAME的结果。微调器将特定FIELD_NAME的字符串作为FIELDSELECTION传递,我需要查询才能在列中显示具有FIELDSELECTION的整个行。当我在having参数或groupBy参数中放置除null以外的任何内容时,应用程序停止在查询行上。另外,我不确定参数字符串是否必须具有GROUP BY或HAVING,或者它是否已经自动添加。

回答

1

该文档假定您已经知道SQL。

这个特定的查询将被写成:

SELECT _id, Name, Lat, Lng, Bear, BoomWidth, Comments, Zoom 
FROM MyTable 
WHERE Name = (FIELDSELECTION) 

这意味着,比较必须进入selection参数:

mDB.query(DATABASE_TABLE, 
      new String[] { FIELD_ROW_ID, FIELD_NAME, FIELD_LAT , FIELD_LNG, FIELD_BEAR, FIELD_BOOMWIDTH, FIELD_COMMENTS, FIELD_ZOOM }, 
      FIELD_NAME + " = ?", new String[] { FIELDSELECTION }, 
      null, null, null);