Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite,其中IN后跟变量字符串_Android_String_Sqlite - Fatal编程技术网

Android SQLite,其中IN后跟变量字符串

Android SQLite,其中IN后跟变量字符串,android,string,sqlite,Android,String,Sqlite,我有变量字符串(用户可以通过带有复选框的ListView进行设置,因此字符串可以包含任意数量的水果) 我有以下SQLite查询 Cursor cursor = db.query (TABLE_NAME, new String[] { WOORD }, "kern IN (\"Banana\", \"Apple\")", null, null, null, null, null); 我想用变量替换查询的(\'Banana\',\'Appl

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

我有以下SQLite查询

          Cursor cursor = db.query (TABLE_NAME, new String[] {
        WOORD },
        "kern IN (\"Banana\", \"Apple\")", null, null, null, null, null);   
我想用变量替换查询的(\'Banana\',\'Apple\')部分

我该怎么做


谢谢

只需像

 Cursor cursor = db.query (TABLE_NAME, new String[] {
    WOORD },
    "kern IN (\""+var1+"\", \""+var2+"\")", null, null, null, null, null); 
对于未知的VAR数量

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); 
inString=”“;

对于(int i=0;i如果要将变量放入
选择
参数,可以使用拆分字符串,然后形成选择,如

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();
StringBuilder sb=新建StringBuilder();
某人加上(“);
字符串[]inItems=kernset.split(“\\,\\s+”);
for(int i=0;i0)
某人加上(“,”);
sb.追加(““+inItems[i]+”);
}
某人加上(“)”;
字符串选择=sb.toString();

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

传递
inItems
谢谢!我自己永远也不会想到这一点。我不得不添加
sb.append(“)”
以获取结束日期
。当前(工作)代码:`for(inti=0;i0)sb.append(“,”);sb.append(““+inItems[i]+””);}sb.append(“);字符串选择=sb.toString();`--请编辑您的解决方案以添加),以便我可以将其标记为正确。谢谢没问题=)很抱歉,我在复制未知变量数量的代码时错过了那一行;我收到错误,缺少
在第7行,inString不能解析为变量,表达式的类型必须是Array,但解析为String;在类似inString的行之后=inString+“,”;
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();