android – sqlite: looks like moveToNext works without moveToFirst needed-ThrowExceptions

Exception or error:

After creating a standard SQLite cursor, I’m iterating thru the entries using:

while (cursor.moveToNext()) {
}

All the rows are being processed correctly.
All the documentation I’ve read states you need to issue a moveToFirst() to ensure
that you’re pointing to the first entry of the cursor set.

Is this working even though it shouldn’t,
and another release may not have the same processing?

How to solve:

No, this is working correctly. Cursors begin at row index -1 (before the first row). If the Cursor references multiple rows, looping through them with the while loop as you have suggested is the preferred method. It will call moveToNext(), which moves you to index 0 (the first row), and go from there.

If your Cursor only references one row, you may call moveToFirst() on it before reading data to ensure that you are on a valid index. Both moveToFirst() and moveToNext() have the same effect when the Cursor is first created and is at index -1.

Leave a Reply

Your email address will not be published. Required fields are marked *