我在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 ,因此每个州只选择一个条目。
这是我的数据库截图和限制版本,但即使在我原来的大型数据库上,问题也是一样的。
这是我的模拟器截图。
新南威尔士的内容未在列表中显示。为什么新南威尔士州是唯一似乎没有出现的州。
答案 0 :(得分:0)
我认识了新秀。 我的游标语句如下:
c.movetoFirst()
在移动到第一个条目时很好。
但是我按照以下方式循环访问数据库:
reefs.moveToNext();
do{
StateDataProvider dataprovider = new StateDataProvider(reefs.getString(1));
arrayList.add(dataprovider);
} while (reefs.moveToNext());
我没有删除
reefs.moveToNext()
因为我复制并粘贴了该代码。
我删除了
reefs.moveToNext()
一切正常。