zoukankan      html  css  js  c++  java
  • Android 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();  
  • 相关阅读:
    《代码整洁之道》之四 注释
    《代码整洁之道》之三 函数
    《代码整洁之道》之二 有意义的命名
    《代码整洁之道》
    Hibernate学习笔记
    Struts2复习笔记
    学习Spring必学的Java基础知识
    Eclipse下搭建Maven框架
    onvif实现
    rtmp服务端实现
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/6393123.html
Copyright © 2011-2022 走看看