通过游标获取查询会停止应用程序

时间:2014-07-14 10:48:01

标签: java android database sqlite

我正在尝试从数据库中读取数据,我的应用程序停止了。 我有这个日志:

android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
07-14 06:43:00.716: E/AndroidRuntime(2604):     at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)

这是方法:

public Cursor getDetails(){

    SQLiteDatabase db = helper.getReadableDatabase();
    Cursor cursor;
    cursor = db.query(TABLE_NAME, new String[] {EMAIL,PASSWORD}, null, null, null, null, null);


    return cursor;

}

这是主要活动:

cursor = handler.getDetails();
            email_by_user = cursor.getString(cursor.getColumnIndex(EMAIL));

任何想法? 感谢

1 个答案:

答案 0 :(得分:1)

如果要访问Cursor对象中的数据,则必须放置Cursor对象。

实际上,在尝试从中访问数据之前,您必须将Cursor置于第一行。

放线

cursor.moveToFirst(); 
行前

email_by_user = cursor.getString(cursor.getColumnIndex(EMAIL));

即。将您的活动代码重写为

cursor = handler.getDetails();
if (cursor != null && cursor.getCount() > 0) {
    cursor.moveToFirst();
    email_by_user = cursor.getString(cursor.getColumnIndex(EMAIL));
}