Mit*_*ran 6 sqlite android 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);
}
Run Code Online (Sandbox Code Playgroud)
功能检索更多客户
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);
}
Run Code Online (Sandbox Code Playgroud)
groupId ArrayList的大小是动态的.
Jos*_*phL 15
您可以使用Android TextUtils类连接方法将逗号分隔的ID列表放入in子句中.
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);
Run Code Online (Sandbox Code Playgroud)
顺便说一下,如果groupIds是来自另一个表的主键列表,你应该使用Longs来存储它们而不是Integers,否则当ID变大时它会溢出.
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5770 次 |
| 最近记录: |