SQLite
 sql >> база данни >  >> RDS >> SQLite

android.database.CursorIndexOutOfBoundsException

Опитвате се да извлечете елемент от индекс 2, но този индекс наистина не съществува (Размерът на курсора е 2, така че индексите са 0,1).

Променете своя цикъл:

if (result != null && result.moveToFirst()){
    do {
       Post post = new Post();
       post.setPostId(result.getInt(0));
       posts.add(post);
       ....
    } while (result.moveToNext());
}

Сега трябва да работи правилно.

Забележка: Не забравяйте да извикате moveToFirst() метод, който премества курсора в първия запис (имплицитно се позиционира преди първия ред) и го подготвя за четене. Това също е удобен метод за тестване дали курсорът е валиден или не.

Забележка 2: Не използвайте индекси на колони, можете просто да направите грешка при броенето. Вместо да използвате имена на колони - този подход обикновено се препоръчва напр. cursor.getColumnIndex("<columnName>")



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите текущата дата в SQLite

  2. UnsatisfiedLinkError в собствения метод

  3. Как работи SQLite Random().

  4. Как правилно да затворите курсора в android

  5. Как да разработите първо офлайн приложение за Android