Android内容提供程序查询IN子句

dnk*_*tso 10 sqlite android

是否可以为内容提供商使用IN子句?

我目前正在使用

cursor = contentResolver.query(CONTENT_URI, PROJECTION, "field IN (?)", new String[] { argsBuilder.toString() }, null);
Run Code Online (Sandbox Code Playgroud)

如果我删除(?)并只是使用?我得到一个错误.

我的光标得到0计数.

如果我手动输入并在sqlite3中执行查询就可以了.

救命?

Fem*_*emi 21

使用IN运算符时,您需要?selectionArgs数组中为每个参数分隔一个逗号.例如:

String[] selectionArgs = {"red", "black"};
String selection = "color IN (?, ?)";
Run Code Online (Sandbox Code Playgroud)

以下选择正确的计数和正确的args:

int argcount = 2; // number of IN arguments
String[] args = new String[]{ 1, 2 };
StringBuilder inList = new StringBuilder(argcount * 2);
for (int i = 0; i < argcount; i++) { 
    if(i > 0) {
        inList.append(",");
    }
    inList.append("?"); 
}
cursor = contentResolver.query(
   CONTENT_URI, 
   PROJECTION, 
   "field IN (" + inList.toString() + ")", 
   args, 
   null);
Run Code Online (Sandbox Code Playgroud)