在从事一个项目并为同样的问题苦苦挣扎时,我发现这些其他问题(和答案)很有帮助:
- Sqlite 在一列中查询多个值
- Android/SQLite IN 子句和占位符
这是我发现的作品:
String[] args = new String[] {"A", "B"};
Cursor cur = db.query("tab1", null, "name in(?,?)", args, null, null, null);
将:
String args = "A, B";
Cursor cur = db.query("tab1", null, "name in(" + args + ")", null, null, null, null);
因此,您可以?
在语句中使用多个,IN()
并将每个与selectionArgs
数组中的一个元素匹配(如第一个示例)。如果您的WHERE
子句中有多个条件,请确保将?
与 中的正确元素匹配selectionArgs
:
String[] args = new String[] {"Current", "A", "B"};
Cursor cur = db.query("tab1", null, "IsCurrent=? AND name in(?,?)", args, null, null, null);
或者,您可以直接在字符串本身的IN()
语句中使用由逗号分隔的参数组成的selection
字符串(如第二个示例)。
引用的问题似乎表明您可以在中使用单个?
并IN()
以某种方式扩展关联的参数,但我无法让它工作。