2013-02-08 71 views
0

我quering我的SQLite數據庫得到記錄使用IN操作符Android的SQLite的列索引

myDataBase.rawQuery("SELECT * FROM artist WHERE artist_id IN (?)", values); 

,但我得到一些SQLite的例外。我不明白什麼是問題 當我的數據庫有1條記錄,這是由這個查詢返回然後它是完美的,但是當我有2個或更多的記錄在我的數據庫通過這個查詢返回它是拋出一些異常 該異常是

SQLiteException: bind or column index out of range 

請讓我知道什麼,我

感謝做錯了此查詢...

+1

我認爲'IN'需要''值''和「,」分隔符。 – 2013-02-08 14:06:04

+1

你必須有一個單獨的'?'爲'values'數組中的每個值。見http://stackoverflow.com/questions/7418849/android-sqlite-in-clause-and-placeholders – 2013-02-08 14:06:14

+0

你是對的@大衛M – Farrukh 2013-02-08 14:24:58

回答

1

我建議這樣的

StringBuilder query = new StringBuilder(); 
// build "SELECT * FROM artist WHERE artist_id IN " 
query.append('('). 
for (int i = 0; i < values.length; i++) { 
    query.append(values[i]); 
    if (i != values.length - 1) { 
     query.append(','); 
    } 
} 
query.append(')'); 

myDataBase.rawQuery(query.toString(), null); 
+0

謝謝你,我已經嘗試了同樣的方法來解決這個問題問題 :) – Farrukh 2013-02-08 14:23:31