Where IN后面跟着变量String



我有一个变量string(用户可以通过带有复选框的ListView设置它,因此字符串可以包含任意数量的水果)

    private static final String kernset = "Banana, Peach"

我有以下SQLite查询

          Cursor cursor = db.query (TABLE_NAME, new String[] {
        WOORD },
        "kern IN ("Banana", "Apple")", null, null, null, null, null);   

我想将查询的("Banana", "Apple")部分替换为变量。

我该怎么做呢?

谢谢!

如果你想在你的selection参数中放置一个变量,你可以使用split方法拆分你的字符串,然后形成你的选择,如

StringBuilder sb = new StringBuilder();
sb.append("kern IN (");
String[] inItems = kernset.split("\,\s+");
for (int i=0; i < inItems.length; i++){
    if (i > 0)
        sb.append(", ");
    sb.append("'" + inItems[i] + "'");
}
sb.append(")");
String selection = sb.toString();

然而,如果您希望在selection中使用?并将其替换为selectionArgs[],这似乎是不可能的,因为在selectionArgs中传递的值被' '包围。但是,您可以使用?而不是实际值(如kern IN (?, ?, ?))进行选择,然后通过selectionArgs[]

传递inItems

只需使用像

这样的连接
 Cursor cursor = db.query (TABLE_NAME, new String[] {
    WOORD },
    "kern IN (""+var1+"", ""+var2+"")", null, null, null, null, null); 

表示未知变量数目

inString="";
   for(int i=0;i<fruits.length();i++)
    {
        inString=inString+"""+fruits[i]+""";
        if(i<(fruits.length()-1))
      {
         inString=inString+", "
      }
    }

        Cursor cursor = db.query (TABLE_NAME, new String[] { WOORD },
            "kern IN ("+inString+")", null, null, null, null, null); 

最新更新