SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

android.database.CursorIndexOutOfBoundsException

Anda mencoba untuk mengambil item pada indeks 2 tetapi indeks ini benar-benar tidak ada (Ukuran kursor adalah 2 sehingga indeks adalah 0,1).

Ubah lingkaran Anda:

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

Sekarang seharusnya berfungsi dengan benar.

Catatan: Jangan lupa untuk memanggil moveToFirst() metode yang memindahkan kursor ke catatan pertama (secara implisit diposisikan sebelum baris pertama) dan mempersiapkannya untuk dibaca. Ini juga merupakan metode praktis untuk menguji apakah Kursor valid atau tidak.

Catatan 2: Jangan gunakan indeks kolom, Anda bisa saja membuat kesalahan dalam menghitung. Alih-alih menggunakan nama kolom - pendekatan ini umumnya direkomendasikan e.q. 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. Sisipan SQLite

  2. onCreate() dari RoomDatabase.Callback() tidak dipanggil setelah panggilan berhasil ke .build()

  3. Kembalikan Awal Bulan di SQLite

  4. Bagaimana saya bisa menambahkan kolom baru ke database SQLite setelah aplikasi Android dirilis?

  5. selectionArgs di SQLiteQueryBuilder tidak berfungsi dengan nilai integer di kolom