如何为 Android SQLite 查询从动态 ArrayList 编写 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 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);
}
groupId ArrayList 的大小是动态的。
How can i write the where in clause in Android SQLite query?
Function to retrieve a single customer
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);
}
Function to retrieve a more customers
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);
}
The size of the groupId ArrayList is dynamic.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 Android TextUtils 类 join 方法来创建逗号分隔列表要放入 in 子句中的 ID 数。
顺便说一句,如果 groupIds 是另一个表中的主键列表,您应该使用长整型来存储它们而不是整数,否则当 ID 变大时它会溢出。
You can use the Android TextUtils class join method to make a comma separated list of IDs to put in the in clause.
BTW if groupIds is a list of primary keys from another table you should be using Longs to store them not Integers otherwise it will overflow when the IDs get large.
我想在 @JosephL's 答案根据我的研究:
我有两个ArrayList,具有以下值:
第一个ArrayList(在第一个列)具有重复值,而第二个 ArrayList(在第二列中)具有唯一值。
处理后打印两者,如下所示:
"(" + TextUtils.join(",", arrayList1) + ")"
"(" + TextUtils.join(",", arrayList2) + ")"
第一个数组(使用
new 删除重复项HashSet<>(arrayList1)
):"(" + TextUtils.join(",", new HashSet<>(arrayList1)) + ")"
=>第一个数组:(67,67,70,70)
=>第二个数组:(35,36,41,42)
=>第一个数组(使用
new HashSet<>(arrayList1)
删除重复项):(67,70)希望它有用。谢谢。
I want to add something in @JosephL's answer as per my study:
I have two ArrayList with following values:
First ArrayList (in First Column) have duplicate values and Second ArrayList (in Second Column) has unique values.
Printing both after processing as below:
"(" + TextUtils.join(",", arrayList1) + ")"
"(" + TextUtils.join(",", arrayList2) + ")"
First Array (Remove Duplicates using
new HashSet<>(arrayList1)
):"(" + TextUtils.join(",", new HashSet<>(arrayList1)) + ")"
=> First Array : (67,67,70,70)
=> Second Array : (35,36,41,42)
=> First Array (Remove Duplicates using
new HashSet<>(arrayList1)
): (67,70)Hope it will useful. Thanks.