android.database.CursorIndexOutOfBoundsException:指

2019-05-13 14:39发布

我使用定制适配器在列表视图显示数据延伸光标适配器,显示特定电话号i已通过id来在数据库类中的方法,但它显示

errorandroid.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 

同时将调试器在所述方法时不行之后去

num = cursor.getString(cursor.getColumnIndex("ContactNumber"));

任何一个可以帮助我解决这个问题。 这是代码:

public String getNumberFromId(int id) 
{
    String num;
    db= this.getReadableDatabase();
    Cursor cursor = db.query(scheduletable, new String[] { "ContactNumber" },"_id="+id, null, null, null, null);
    cursor.moveToFirst();
    num = cursor.getString(cursor.getColumnIndex("ContactNumber")); 
    cursor.close();
    db.close();
    return num;
}

Answer 1:

当你正在处理光标,经常检查空和检查moveToFirst()没有失败。

if( cursor != null && cursor.moveToFirst() ){
    num = cursor.getString(cursor.getColumnIndex("ContactNumber"));
    cursor.close(); 
}

地方适当的日志,看看它是否返回null或空指针。 根据该检查查询。

更新在单个语句把两个支票由Jon在下面的评论中提到。

更新2close()的有效光标范围内调用。



Answer 2:

试试这个..这将避免抛出异常,当光标是空的..

if(cursor != null && cursor.moveToFirst()){
    num = cursor.getString(cursor.getColumnIndex("ContactNumber")); 
    cursor.close();
}


Answer 3:

读取数据之前,首先检查这个条件

if(cursor!=null && cursor.getCount()>0){
  cursor.moveToFirst();
  num = cursor.getString(cursor.getColumnIndex("ContactNumber")); 
}


Answer 4:

检查从返回值moveToFirst()您尝试读取从游标任何事情之前。 看起来好像正在返回任何结果。



Answer 5:

保存架构查询Cursor s是

// just one
Cursor cursor = db.query(...);
if (cursor != null) {
    if (cursor.moveToFirst()) {
        value = cursor.getSomething();
    }
    cursor.close();
}

// multiple columns
Cursor cursor = db.query(...);
if (cursor != null) {
    while (cursor.moveToNext()) {
        values.add(cursor.getSomething());
    }
    cursor.close();
}


Answer 6:

如果人们仍然在寻找:

而不是搜索的"ContactNumber"尝试搜索Phone.NUMBER 。 本教程使用了更多的细节代码: http://developer.android.com/training/basics/intents/result.html



Answer 7:

尝试卸载应用程序,然后再次测试...其实sqlite的分贝仅创建一次,当应用程序在第一次安装...所以,如果你认为你的逻辑是目前然后重新安装应用程序就可以了你。 !!!!



文章来源: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0