我有一个表的组,每个组都有一个flaged,列is_active为0或1.我的问题是选择flag为1的所有组,如果我有0个记录为1,那就是很好,如果我有1个记录1,工作正常,但如果多个标记为1,它总是只返回1个记录,一个id最小。 以下是代码:
String query = "SELECT _id FROM groups WHERE is_active = ?";
String[] args = { "1" };
Cursor c = db.rawQuery(query, args);
if (c == null || c.getCount() == 0) {
Log.v("t", "foo");
return null;
} else {
int count = c.getColumnCount();
String[] ids = new String[count];
Log.v("t", "aktywnych group: ------ " + count);
for (int i = 0; i < count; i++) {
c.moveToPosition(i);
ids[i] = String.valueOf(c.getInt(c.getColumnIndex("_id")));
}
return ids;
}
你现在看到的只是另一种尝试,我已经尝试了许多不同的方法来获取这些数据,从来没有用过。 如果你有什么想法我怎么能解决它我会很棒。
答案 0 :(得分:1)
这是因为你使用了这个:
int count = c.getColumnCount();
根据official documentation,此方法返回您请求的COLUMNS数。查看您的查询,您只需要一列:_id
。因此,结果将始终为1,如果没有找到,则为0。
您应该使用此行:
int count = c.getCount();