0

列 is_active に 0 または 1 のいずれかで、それぞれにフラグが付けられているグループのテーブルがあります。私の問題は、フラグが 1 のすべてのグループを選択することです。 1 のレコードが 1 つあり、正常に動作しますが、複数のレコードに 1 のタグが付けられている場合、常に ID が最も小さい 1 つのレコードのみが返されます。コードは次のとおりです。

        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 の数を返します。クエリを見て、1列だけを求めています: _id. したがって、結果は常に 1 になり、何も見つからない場合は 0 になります。

代わりに次の行を使用する必要があります。

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