CursorIndexOutOfBoundsException:请求索引-1,大小为1

ban*_*bob 1 java android exception

我正在创建一个存储日记条目的应用程序.在检索日记条目后,我得到了一个CursorIndexOutOfBoundsException,我相信它与我的SELECT声明有关,以获取数据库中的信息.

    getDAO = new DAO(this);
    Cursor showDiaryEntries = getDAO.queryDiary(Diary.DiaryItem.FULL_PROJECTION, Diary.DiaryItem.COLUMN_NAME_DIARY_TITLE+" = "+fieldTitle, null);


    Long fieldDate = showDiaryEntries.getLong(1);
    Long fieldTime = showDiaryEntries.getLong(2);
    String fieldEntry = showDiaryEntries.getString(3);

    mDate.setText(String.valueOf(fieldDate));
    Log.i(TAG,"Field Date "+ fieldDate);
    mTime.setText(String.valueOf(fieldTime));
    Log.i(TAG,"Field Time "+ fieldTime);
    mEntry.setText(fieldEntry);
    Log.i(TAG,"Field Entry "+ fieldEntry);
Run Code Online (Sandbox Code Playgroud)

我一直在阅读这种类型的异常并且相信它可能与我获得String/Long时有关,因为我没有循环?虽然我不完全理解这一点.

记录猫

03-07 07:10:59.475: E/AndroidRuntime(1471): FATAL EXCEPTION: main
03-07 07:10:59.475: E/AndroidRuntime(1471): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.democo.mydiary/com.democo.mydiary.DiaryEntryActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
Run Code Online (Sandbox Code Playgroud)

我希望有人能够教育我这个问题是什么.谢谢

Con*_*den 6

请务必致电:

showDiaryEntries.moveToFirst();
Run Code Online (Sandbox Code Playgroud)

在开始对光标做任何事情之前执行此操作.这将确保光标从数据库的第一行开始!


Sha*_*yaz 5

首先确保您的光标是

*not null

*Then move it to first position

if(showDiaryEntries!=null &&  showDiaryEntries.moveToFirst())
{
//Now do waht ever u want to do with cursor
 }
Run Code Online (Sandbox Code Playgroud)

上面的代码将解决您现在面临的问题以及您将来可能面临的问题。