关于android系统自带数据库SQLite操作的重要易犯错误
2012-10-23 09:39
645 查看
先来三段代码
第一段
第二段
第三段
前2段代码运行,都不会出错,第三段代码运行其实也不会出错,但是第三段代码却有一个致命的问题,就是数据库中的第一条取不到。
所以当使用了cursor.moveToFirst()之后,不能再采用while循环,而是要采用do——while循环。或者不使用cursor.moveToFirst();游标集的游标默认的是在第一行上面的位置,这时候就可以直接使用while循环了
第一段
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循环了
相关文章推荐
- android系统内置数据库SQLite的建库、建表、添加、删除、修改、查询等基本操作
- android 数据库技术 | 文件系统,SDCARD访问,CONTENT PROVIDER,SQLITE ,CURSOR操作,CURSOR适配器,SQLITEHELPER,数据库设计模式
- (一一三)使用系统自带框架操作SQLite3数据库
- (一一三)使用系统自带框架操作SQLite3数据库
- Android SQLite数据库操作(一)
- Android数据库两种操作方式介绍: SQLite与ORMLite
- Android - 插入数据库(SQLite)错误
- android数据库sqlite可视化操作
- Android SQLite数据库基本操作和收藏功能的实现例子
- N年不开张了,写一个关于Android中用文件初始化sqlite 数据库的文章
- 掌握android系统内置数据库SQLite的建库、建表。
- Android sqlite数据库操作通用框架AHibernate(1)
- Android中使用SQLiteDatabase对数据库进行操作
- Android系统中关于短信(SMS)的操作
- Android中操作Sqlite遇到的错误:java.lang.IllegalStateException: Couldn't read row 1, col 0 from CursorWindow
- iOS学习之系统自带的sqlite3的创建数据库、表,插入、查看数据
- 一个关于android数据库操作的小问题
- Android数据库SQLite使用详解二 : 学生管理系统的简单实现
- WinCE自带数据库系统操作笔记
- android数据库操作出现的 android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed