Подтвердить что ты не робот

Sqlite: похоже, что moveToNext работает без moveToFirst

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

while (cursor.moveToNext()) {
}

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

Это работает, хотя это не должно, и другой выпуск может не иметь такой же обработки?

4b9b3361

Ответ 1

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

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