选择始终返回1条记录

时间:2013-06-18 07:41:14

标签: android sqlite select

我有一个表的组,每个组都有一个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;

        }

你现在看到的只是另一种尝试,我已经尝试了许多不同的方法来获取这些数据,从来没有用过。 如果你有什么想法我怎么能解决它我会很棒。

1 个答案:

答案 0 :(得分:1)

这是因为你使用了这个:

int count = c.getColumnCount();

根据official documentation,此方法返回您请求的COLUMNS数。查看您的查询,您只需要一列:_id。因此,结果将始终为1,如果没有找到,则为0。

您应该使用此行:

int count = c.getCount();