2015-10-06 41 views
-1

我想返回一個遊標與字符串數組中的一個ID匹配的所有行 - 這是我到目前爲止我得到下面的錯誤。我認爲這與它只有1'的事實有關?但我如何才能使這種動態?有什麼建議麼?用動態selectionArgs查詢android sqlite

public Cursor getSelectedEntries(String... ids) 
{ 

    return movieDbInstance.query(
      DATABASE_TABLE, 
      new String[]{_ID, MOVIE_ID, MOVIE_TITLE, MOVIE_YEAR, MOVIE_POSTER}, 
       MOVIE_ID + " = ?", 
      ids, 
      null, 
      null, 
      null); 
} 

字符串數組具有IDS例如 它可能是{ 「ABC」, 「DEF」}或者它可以是{ 「ABC」 的變化的數字, 「DEF」, 「GEF」,「GDF 「}並且我需要返回其中MOVIE_ID =其中之一的所有行...

錯誤消息'java.lang.IllegalArgumentException:由於索引超出範圍,無法在索引10處綁定參數。
該語句有1個參數。 at android.database.sqlite.SQLiteProgram.bind(SQLiteProgram.java:212)

回答

1

您正在傳遞一個id數組,但在您的WHERE語句中只有一個佔位符。如果你有幾個IDS,你需要把幾個佔位符在WHERE子句中,如:

MOVIE_ID + " = ? OR " + MOVIE_ID + " = ? OR " + ... 

當然佔位符的數量必須與你數組中ID的數量。所以,如果ids的數量發生變化,則需要像上面那樣動態構建WHERE子句。

+0

謝謝! @基督教 – Daviepark