sqlite: похоже, что moveToNext работает без необходимости в moveToFirst - PullRequest
19 голосов
/ 21 августа 2011

После создания стандартного курсора SQLite, я перебираю записи, используя:

while (cursor.moveToNext()) {
}

Все строки обрабатываются правильно.Во всей прочитанной документации указано, что вам нужно ввести moveToFirst(), чтобы убедиться, что вы указываете на первую запись набора курсоров.

Работает ли это, хотя не должно,релиз может не иметь такой же обработки?

1 Ответ

43 голосов
/ 22 августа 2011

Нет, это работает правильно. Cursor s начинается с индекса строки -1 (перед первой строкой). Если Cursor ссылается на несколько строк, предпочтительным методом является цикл по ним с помощью цикла while, как вы предложили. Он вызовет moveToNext(), который переместит вас в индекс 0 (первый ряд), и пойдет оттуда.

Если ваш Cursor ссылается только на одну строку, вы можете вызвать moveToFirst() на ней перед чтением данных, чтобы убедиться, что вы находитесь в допустимом индексе. И moveToFirst(), и moveToNext() имеют одинаковый эффект при первом создании Cursor с индексом -1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...