SQLite
 sql >> Baza danych >  >> RDS >> SQLite

android.database.CursorIndexOutOfBoundsException

Próbujesz pobrać element z indeksu 2, ale ten indeks naprawdę nie istnieje (rozmiar kursora to 2, więc indeksy wynoszą 0,1).

Zmień swoją pętlę:

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

Teraz powinno działać poprawnie.

Uwaga: Nie zapomnij wywołać moveToFirst() metoda, która przenosi kursor do pierwszego rekordu (domyślnie jest umieszczony przed pierwszym wierszem) i przygotowuje go do odczytu. Jest to również przydatna metoda sprawdzania, czy Cursor jest prawidłowy, czy nie.

Uwaga 2: Nie używaj indeksów kolumn, możesz po prostu popełnić błąd w liczeniu. Zamiast używać nazw kolumn - to podejście jest ogólnie zalecane, np. 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. Testowanie jednostek bazy danych SQLite systemu Android

  2. Jak używać klasy databasehelper w klasie asynctask pracującej na innej klasie?

  3. Dane SQLite do RecyclerView

  4. Czy powinien istnieć jeden SQLiteOpenHelper dla każdej tabeli w bazie danych?

  5. Klucz obcy SQLite