关于android系统自带数据库SQLite操作的重要易犯错误

来源:互联网 发布:linux usb转串口 编辑:程序博客网 时间:2024/05/08 23:12

先来三段代码

第一段

Cursor cursor=  database.rawQuery(sql, null);System.out.println(cursor+""while (cursor.moveToNext()) {String province;province=cursor.getString(cursor.getColumnIndex("PROVINCE"));list.add(province);count++;}

第二段

Cursor cursor=  database.rawQuery(sql, null);System.out.println(cursor+"");cursor.moveToFirst();do{String province;province=cursor.getString(cursor.getColumnIndex("PROVINCE"));list.add(province);count++;}while (cursor.moveToNext());

第三段

Cursor cursor=  database.rawQuery(sql, null);System.out.println(cursor+"");cursor.moveToFirst();while (cursor.moveToNext()) {String province;province=cursor.getString(cursor.getColumnIndex("PROVINCE"));list.add(province);count++;}


前2段代码运行,都不会出错,第三段代码运行其实也不会出错,但是第三段代码却有一个致命的问题,就是数据库中的第一条取不到。

所以当使用了cursor.moveToFirst()之后,不能再采用while循环,而是要采用do——while循环。或者不使用cursor.moveToFirst();游标集的游标默认的是在第一行上面的位置,这时候就可以直接使用while循环了


原创粉丝点击