2014-11-22 63 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);