传递
我有一个变量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);