2010-10-21 95 views
2

我如何使用字符串數組來查詢sqlite數據庫?我不斷收到異常「SQliteException:綁定或列索引超出範圍」。使用數組來查詢sqlite數據庫android

 String[] names = new String[values.size()]; // values is an Arraylist 
     String[] condition = values.toArray(names); 
Cursor row = db.query(true,DATABASE_TABLE, resultColumns, NAME +"=" + "?", condition, null, null, null,null); 

請任何幫助將不勝感激像往常一樣。謝謝

P.S值,這是Arraylist正在通過循環poplulated,所以我不能有一個定義的大小。這就是爲什麼我不能使用get()方法並用逗號分隔它中的元素,這會更容易。

回答

5

您的查詢的where子句是where name = ?。這期望傳入的數組大小爲1.從它的名稱(名稱)來判斷,我猜測它不是。你需要重新思考你想要什麼SQL查詢(可能是where name in ...)。

例如爲:

final String whereClause = NAME + " in (" + convertToCommaDelimitedString(values) + ")"; 
db.query(true,DATABASE_TABLE, resultColumns, whereClause, null, null, null, null,null); 

您需要實現String convertToCommaDelimitedString(Collection c);

+0

是的..你是對的,數組的大小不止一個。但是用sqlite不太好..所以我不知道如何調用你建議的方法。你能給我的語法格式或鏈接,我可以按照?...感謝您的回覆 – Rexx 2010-10-21 14:23:12

+0

嗨..感謝您的答覆..我已經有我的Arraylist逗號分隔,所以我不知道我是否我需要再次實施。 – Rexx 2010-10-21 15:29:34

+0

嘗試了..它現在給我另一個sqliteException「語法錯誤」.. :( – Rexx 2010-10-21 15:30:55