问题遇到的现象和发生背景
在学习并尝试从sqlite读取数据并展示在listview中,我的sqlite数据库中只有39行数据,然而用while (cursor.moveToNext());却会一直循环702次。
问题相关代码
Cursor cursor = db.rawQuery("select * from foodTable",null);
Integer xhcs =0 ;
while (cursor.moveToNext()); {
list.add(new FoodList(cursor.getString(cursor.getColumnIndex("foodname"))
, cursor.getString(cursor.getColumnIndex("exclude"))
, cursor.getString(cursor.getColumnIndex("resid"))));
xhcs=xhcs+1; //记录循环次数}
cursor.close();
db.close();
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("foodname", list.get(i).foodname);
map.put("exclude", list.get(i).exclude);
map.put("resid", list.get(i).resid);
listitem.add(map);
}
Log.d(TAG,xhcs.toString());
运行结果及报错内容
运行后在正确的生成一轮item之后会继续从第一个item开始再重复多轮。
我的解答思路和尝试过的方法
在数据库里用select * from foodTable语句能正常返回39条结果,用select count(*) from foodTable也返回39
尝试过用cursor.moveTofirst定位或是用while(!cursor.isAfterLast()),依然会循环702次。
我想要达到的结果
正确循环39次后停止,想知道为啥会这样。。702/39=18次,也就是说多循环了18次。。就算算上列我的数据库也才39*6=234个格子。。