Error while using cursor to read SQLite table

0

I'm having the following error:

  

Could not read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.

but in my view the cursor was correctly initialized in the first position as you can see:

SQLiteDatabase db = openOrCreateDatabase("meudb",MODE_PRIVATE,null);


db.execSQL("CREATE TABLE IF NOT EXISTS pessoas(nome VARCHAR, IDADE INT(3))");
    db.execSQL("INSERT INTO PESSOAS(nome,idade) VALUES('davi', 25)");
    db.execSQL("INSERT INTO PESSOAS(nome,idade) VALUES('marcos', 31)");
    db.execSQL("INSERT INTO PESSOAS(nome,idade) VALUES('thiago', 50)");
    db.execSQL("INSERT INTO PESSOAS(nome,idade) VALUES('bruna', 24)");
    db.execSQL("INSERT INTO PESSOAS(nome,idade) VALUES('vanessa', 18)");




    Cursor cursor = db.rawQuery("SELECT nome,idade FROM pessoas",null);
    int colunaNome = cursor.getColumnIndex("nome");
    int colunaIdade = cursor.getColumnIndex("idade");

    cursor.moveToFirst();
    while (cursor != null){
        Log.i("Nome: ",cursor.getString(colunaNome));
        Log.i("Idade: ",cursor.getString(colunaIdade));
        cursor.moveToNext();
    }
 }}
    
asked by anonymous 17.03.2017 / 13:57

1 answer

1

The cursor is being accessed before cursor.moveToFirst() . In addition, the while condition returns true.

Do this:

Cursor cursor = db.rawQuery("SELECT nome,idade FROM pessoas",null);

if(cursor != null && cursor.moveToFirst()){
    do{
        Log.i("Nome: ", cursor.getString(cursor.getColumnIndex("nome")));
        Log.i("Idade: ", cursor.getString(cursor.getColumnIndex("idade")));
    }while(cursor.moveToNext());
}
    
17.03.2017 / 14:32