如何从Android SQLite查询的动态ArrayList中编写WHERE IN子句
如何在Android SQLite查询中编写where in子句 函数检索单个客户如何从Android SQLite查询的动态ArrayList中编写WHERE IN子句,android,sqlite,where-in,Android,Sqlite,Where In,如何在Android SQLite查询中编写where in子句 函数检索单个客户 public Cursor getCustomers(int groupId) { return db.query(TABLE_CUSTOMERS, new String[] { KEY_CUSTOMER_ID, KEY_NAME}, KEY_GROUP_ID+" = "+groupId, null, null, null, null); } 函数以检索更多客户 public Cursor getCus
public Cursor getCustomers(int groupId) {
return db.query(TABLE_CUSTOMERS, new String[] { KEY_CUSTOMER_ID, KEY_NAME}, KEY_GROUP_ID+" = "+groupId, null, null, null, null);
}
函数以检索更多客户
public Cursor getCustomers(ArrayList<Integer> groupIds) {
// Need to apply SELECT id, name FROM customers WHERE id IN (11, 13, ...18);
//return db.query(TABLE_CUSTOMERS, new String[] { KEY_CUSTOMER_ID, KEY_NAME}, KEY_GROUP_ID+" = "+groupIds, null, null, null, null);
}
公共游标getCustomers(ArrayList GroupId){
//需要从id位于(11,13,…18)的客户处申请选择id和名称;
//返回db.query(TABLE_CUSTOMERS,新字符串[]{KEY_CUSTOMER_ID,KEY_NAME},KEY_GROUP_ID+“=”+groupid,null,null,null);
}
groupId数组列表的大小是动态的。返回db.query(TABLE_CUSTOMERS,new String[]{KEY_CUSTOMER_ID,KEY_NAME},KEY_GROUP_ID+“>=”+groupIdsLowLimit+”和“+KEY_GROUP_ID+”您可以使用class join方法创建一个逗号分隔的ID列表,将其放入in子句中
return db.query(TABLE_CUSTOMERS, new String[] { KEY_CUSTOMER_ID, KEY_NAME }, KEY_GROUP_ID + " >=" + groupIdsLowLimit + " and " + KEY_GROUP_ID + " <=" + groupIdsUpLimit, null, null, null, null);
String where = "";
for (int i = 0; i < list.size(); i++) {
where = where + KEY_GROUP_ID + " =" + list.get(i).toString() + "";
if (i != (list.size() - 1))
where = where + " or";
}
return db.query(TABLE_CUSTOMERS, new String[] { KEY_CUSTOMER_ID, KEY_NAME }, where, null, null, null, null);
String selection = KEY_GROUP_ID + " IN (" + TextUtils.join(", ", groupIds) + ")";
return db.query(TABLE_CUSTOMERS, new String[] { KEY_CUSTOMER_ID, KEY_NAME}, selection, null, null, null, null);
顺便说一句,如果GroupID是另一个表中的主键列表,则应该使用long来存储它们,而不是整数,否则当ID变大时,它将溢出。根据我的研究,我想在中添加一些内容:
我有两个ArrayList,其值如下:
第一个ArrayList(在第一列中)具有重复的值,第二个ArrayList(在第二列中)具有唯一的值
=> 67 : 35
=> 67 : 36
=> 70 : 41
=> 70 : 42
按如下方式处理后,打印两个文件:
第一个数组:“(“+TextUtils.join”(“,”,arrayList1)+”
第二个数组:“(“+TextUtils.join”(“,”,arrayList2)+”
第一个数组(使用新哈希集(arrayList1)
删除重复项):
“(“+TextUtils.join”(“,”,新哈希集(arrayList1))+””
=>第一个阵列:(67,67,70,70)
=>第二个数组:(35,36,41,42)
=>第一个数组(使用新哈希集(arrayList1)
删除重复项):(67,70)
希望有用。谢谢。对不起,id列表可能是(11、103、6、100)