android中数据库处理使用cursor时,游标不是放在为0的下标,而是放在为-1的下标处开始的。
也就是说返回给cursor查询结果时,不能够马上从cursor中提取值。
下面的代码会返回错误
- User u = null;
- SQLiteDatabase db = dbHelper.getReadableDatabase();
- Cursor cursor = db.rawQuery("select * from user where id = ?", new String[] { id.toString() });
- Integer uid = cursor.getInt(cursor.getColumnIndex("id"));
- String uname = cursor.getString(cursor.getColumnIndex("name"));
- float uamount = cursor.getFloat(cursor.getColumnIndex("amount"));
- u = new User(uid, uname, uamount);
正确的用法
- User u = null;
- SQLiteDatabase db = dbHelper.getReadableDatabase();
- Cursor cursor = db.rawQuery("select * from user where id = ?", new String[] { id.toString() });
- if (cursor.moveToFirst())
- {
- Integer uid = cursor.getInt(cursor.getColumnIndex("id"));
- String uname = cursor.getString(cursor.getColumnIndex("name"));
- float uamount = cursor.getFloat(cursor.getColumnIndex("amount"));
- u = new User(uid, uname, uamount);
- }
本文转自IT徐胖子的专栏博客51CTO博客,原文链接http://blog.51cto.com/woshixy/1079514如需转载请自行联系原作者
woshixuye111