我有变量字符串(用户可以通过带有复选框的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 \”)部分。
我该怎么做?
谢谢!
答案 0 :(得分:3)
如果您想在selection
参数中添加变量,可以使用split method拆分字符串,然后形成您的选择
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
中传递的值被{{1}包围}。但是,您可以使用' '
而非实际值(例如?
)进行选择,然后通过kern IN (?, ?, ?)
inItems
答案 1 :(得分:0)
只使用像
这样的连接 Cursor cursor = db.query (TABLE_NAME, new String[] {
WOORD },
"kern IN (\""+var1+"\", \""+var2+"\")", null, null, null, null, null);
for unknow no of vars
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);