SQliteQueryBuilder setDistinct不包含Android Studio中的所有唯一值

时间:2016-11-24 00:08:39

标签: android android-studio sqlite

我在previous question中解决了一个问题,但现在根据我现在需要做的事情来解决新问题。

我的数据库中有大约900行,有问题的列称为状态。对于第一页,我只想显示用户可以点击的可用状态,然后在新活动中显示该状态的详细信息。所以我只是从数据库中选择状态,只显示每个状态的一个条目。我这样做如下:

public Cursor getData(){
        SQLiteDatabase db = getReadableDatabase();
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
        String [] sqlSelect = {"0 _id", "state"};
        String sqlTables = "Reefs";
        qb.setTables(sqlTables);
        qb.setDistinct(true);
        Cursor c = qb.query(db, sqlSelect, null, null, null, null, null);
        c.moveToFirst();
        return c;
    }

setDistinct 设置为 TRUE ,因此每个州只选择一个条目。

这是我的数据库截图和限制版本,但即使在我原来的大型数据库上,问​​题也是一样的。

enter image description here

这是我的模拟器截图。

enter image description here

新南威尔士的内容未在列表中显示。为什么新南威尔士州是唯一似乎没有出现的州。

1 个答案:

答案 0 :(得分:0)

我认识了新秀。 我的游标语句如下:

c.movetoFirst()

在移动到第一个条目时很好。

但是我按照以下方式循环访问数据库:

 reefs.moveToNext();
    do{
        StateDataProvider dataprovider = new StateDataProvider(reefs.getString(1));
        arrayList.add(dataprovider);
    } while (reefs.moveToNext());

我没有删除

reefs.moveToNext()

因为我复制并粘贴了该代码。

我删除了

reefs.moveToNext()

一切正常。