我正在使用查询:
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_NAME的所有结果。微调器将特定FIELD_NAME
的字符串作为FIELDSELECTION
传递,我需要查询才能显示列中包含FIELDSELECTION
的整个行。当我在having参数或groupBy参数中放置除null之外的任何内容时,应用程序将停止在查询行上。另外,我不确定参数字符串是否必须具有GROUP BY或HAVING,或者它是否已经自动添加。
答案 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);