如何使用字符串数组来查询sqlite数据库?我一直得到异常“SQliteException:绑定或列索引超出范围”。
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正在通过循环弹出,所以我不能有一个定义的大小。这就是为什么我不能使用get()方法并用逗号分隔其中的元素,这本来就更容易。
答案 0 :(得分:5)
您的查询的where子句是where name = ?
。这期望传入的数组大小为1.从它的名称(名称)来看,我猜不是。您需要重新考虑您希望SQL查询的内容(可能是where name in ...
)。
E.g:
final String whereClause = NAME + " in (" + convertToCommaDelimitedString(values) + ")";
db.query(true,DATABASE_TABLE, resultColumns, whereClause, null, null, null, null,null);
您需要实施String convertToCommaDelimitedString(Collection c)
;