首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android中传递多个值进行动态查询?

问如何在android中传递多个值进行动态查询?
EN

Stack Overflow用户
提问于 2012-09-03 14:18:54
回答 4查看 1.4K关注 0票数 2

在我的项目中,我必须选择多个值并将其传递给查询。例如,page1包含复选框。我正在将选中的复选框id存储到一个数组中。我正在对该数组进行混洗,并随机获取这些值。现在,我需要将这些随机值传递给一个查询。在数据库中使用IN操作符,我可以静态地传递这些值,但是如何将这些值动态地传递给查询呢?

对于ex:(静态传值)

代码语言:javascript
复制
SELECT * FROM Persons WHERE person_id IN ('21','22')

在上面的查询中,id的21和22是预先知道的,所以我们是静态传递的,但我想发送动态查询的值。

代码语言:javascript
复制
Page1:
public static ArrayList<String> chksublist = new ArrayList<String>();

Page2:
 Collections.shuffle(chksublist );
SELECT * FROM Persons WHERE person_id IN ('21','22')
In the above line I want to send the random values which are in chksublist array.
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-03 14:34:55

String query = "SELECT * FROM Persons WHERE person_id IN (" + TextUtils.join(",", chksublist) + ")";

但是,在将chksublist发送到您的SQL查询之前,对它进行混洗对从SQL获得的结果集没有影响。它不会随机地改变你的结果。删除Collections.shuffle(chksublist);并使用

String query = "SELECT * FROM Persons WHERE person_id IN (" + TextUtils.join(",", chksublist) + ") ORDER BY RANDOM()";

票数 2
EN

Stack Overflow用户

发布于 2012-09-03 14:22:46

查看如何动态传递值

代码语言:javascript
复制
  // Getting single contact
 public Contact getContact(int id) {
SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
        KEY_NAME, KEY_PH_NO }, KEY_ID + "=?",
        new String[] { String.valueOf(id) }, null, null, null, null);

 // here   new String[] { String.valueOf(id) } value is added dynamicaly which is passed to the function
if (cursor != null)
    cursor.moveToFirst();

Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
        cursor.getString(1), cursor.getString(2));
// return contact
return contact;
 }
票数 1
EN

Stack Overflow用户

发布于 2012-09-03 14:29:03

您可以像这样生成查询

代码语言:javascript
复制
int values[];      //it contains your generated values like 21,22....
String query="SELECT * FROM Persons WHERE person_id IN (";

for(int i=0;i<values.length;i++){
query=query+"'"+values[i]+"'";
if(i<values.length-1){
query=query+",";    //No , after last values
} 

}
query+=")";

最后传递这个查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12242879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档