使用Array来查询sqlite数据库android

Rex*_*exx 2 android

如何使用字符串数组来查询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);
Run Code Online (Sandbox Code Playgroud)

请不要像往常一样非常感谢任何帮助.谢谢

PS值,即Arraylist正在通过循环弹出,所以我不能有一个定义的大小.这就是为什么我不能使用get()方法并用逗号分隔其中的元素,这本来就更容易.

JRL*_*JRL 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);
Run Code Online (Sandbox Code Playgroud)

你需要实施String convertToCommaDelimitedString(Collection c);