0

我有一个组表,其中每个组都被标记,列 is_active 为 0 或 1。我的问题是选择标志为 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;

        }

您现在看到的只是另一种尝试,我尝试了许多不同的方法来获取这些数据,但都没有成功。如果您有任何想法我该如何解决它,我会很高兴。

4

1 回答 1

1

这是因为你使用这个:

int count = c.getColumnCount();

根据官方文档,此方法返回您请求的 COLUMNS 数量。看到您的查询,您只要求一列:_id。因此,结果将始终为 1,如果什么也没找到,则为 0。

您应该改用这一行:

int count = c.getCount();
于 2013-06-18T07:45:51.537 回答