阅读330 返回首页    go 阿里云 go 技术社区[云栖]


Android开发7——android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 1

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);cursor.close();



正确的用法

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);
}
cursor.close();

 

最后更新:2017-04-03 20:19:49

  上一篇:go Android开发16——获取网络资源之基础应用
  下一篇:go Android开发3——查看和输出日志信息