charlest
charlest

Reputation: 935

sqlite: looks like moveToNext works without moveToFirst needed

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?

Upvotes: 19

Views: 4761

Answers (1)

Glendon Trullinger
Glendon Trullinger

Reputation: 4062

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.

Upvotes: 44

Related Questions