sql >> Database >  >> RDS >> SQLite

android.database.CursorIndexOutOfBoundsException

U probeert een item op index 2 op te halen, maar deze index bestaat niet echt (cursorgrootte is 2, dus indexen zijn 0,1).

Verander je loop:

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

Nu zou het correct moeten werken.

Opmerking: Vergeet niet moveToFirst() . aan te roepen methode die de cursor naar de eerste record verplaatst (impliciet vóór de eerste rij wordt geplaatst) en deze voorbereidt op het lezen. Dit is ook een handige methode om te testen of Cursor geldig is of niet.

Opmerking 2: Gebruik geen kolomindexen, u kunt gewoon een fout maken bij het tellen. In plaats van kolomnamen te gebruiken - deze benadering wordt over het algemeen aanbevolen e.q. cursor.getColumnIndex("<columnName>")



  1. Oracle Date datatype, getransformeerd naar 'YYYY-MM-DD HH24:MI:SS TMZ' via SQL

  2. Hoe voeg je xml-codering <?xml version=1.0 encoding=UTF-8?> toe aan xml-uitvoer in SQL Server

  3. Hoe kan ik een SELECT DISTINCT uitvoeren op alle velden behalve een BLOB?

  4. SQLite - Een database maken