首页 > 解决方案 > CursorIndexOutOfBoundsException:请求索引 21,大小为 21

问题描述

我尝试记录姓名和年龄索引并收到超出范围的错误,我不知道为什么。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SQLiteDatabase database = this.openOrCreateDatabase("Users"
            , MODE_PRIVATE, null);
    database.execSQL("CREATE TABLE IF NOT EXISTS users (name " +
            "VARCHAR, age INT(3))");
    database.execSQL("INSERT INTO users (name, age) VALUES ('Nick', 28)");
    database.execSQL("INSERT INTO users (name, age) VALUES ('Alon', 25)");

    Cursor cursor = database.rawQuery("SELECT * FROM users", null);

    int nameIndex = cursor.getColumnIndex("name");
    int ageIndex = cursor.getColumnIndex("age");

    cursor.moveToFirst();

    while (cursor != null && cursor.getCount() > 0){
        Log.i("name", cursor.getString(nameIndex));
        Log.i("age", cursor.getString(ageIndex));
        Toast.makeText(this, "hi", Toast.LENGTH_SHORT).show();
        cursor.moveToNext();
    }
}

}

我尝试在stackoverflow中寻找解决方案,但没有找到任何东西

如标题所示,我收到错误消息

标签: javaandroidindexoutofboundsexception

解决方案


尝试这个

   if(cursor.moveToFirst()){
        do {
            String name = cursor.getString(nameIndex);
            String age = cursor.getString(ageIndex );

        }while (result.moveToNext());
    }

您可以阅读此文档以很好地添加 sqlite。


推荐阅读