CursorIndexOutOfBoundsException: индекс 21 запрошен, с размером 21 - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь записать имена и возрастные индексы и получаю сообщение об ошибке, что они выходят за пределы допустимого диапазона, и я не знаю почему.

@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, но ничего не нашел,

Я получаю ошибку, как следует из названия

1 Ответ

0 голосов
/ 17 февраля 2019

Попробуйте это

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

        }while (result.moveToNext());
    }

Вы можете прочитать этот документ , чтобы добавить sqlite хорошим способом.

...