Android查询参数

时间:2014-11-22 16:01:44

标签: java android sqlite cursor

我正在使用查询:

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

您可以在选择中包含?,它将被来自selectionArgs的值替换,以便它们出现在选择中。这些值将绑定为字符串。

groupBy

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

过滤器声明要在游标中包含哪些行组,如果正在使用行分组,则将其格式化为SQL HAVING子句(不包括HAVING本身)。传递null将导致包含所有行组,并且在未使用行分组时是必需的。

orderBy

如何对行进行排序,格式化为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 个答案:

答案 0 :(得分: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);