Почему c.moveToFirst () не пропустит первую строку

Я всегда использую код ниже, чтобы получить всю информацию
Но у меня есть вопрос, что c.movetoNext приведет к пропуску первой строки набора результатов
Пожалуйста, скажите мне, что на самом деле происходит за поверхностью, чтобы я мог ее полностью понять

SQLiteDatabase db; Cursor c = db.query("pic", null, null, null, null,null, null); c.moveToFirst(); while(c.movetoNext) { //do something //example: String a=c.getString(0); } 

Вы вызываете moveToFirst() , который позиционирует курсор в первой строке, тогда ваш цикл while вызывает moveToNext() перед входом в цикл, что приводит к moveToNext() первой строки.

Вы можете решить это с помощью цикла do … while или цикла for, такого как

 for( c.moveToFirst(); !c.isAfterLast(); c.moveToNext() ) { // Stuff } 

Согласно документации Cursor , «query … Returns: Объект Cursor, который помещается перед первой записью». Кроме того, кажется, что запросы выполняются только при вызове методов курсором . Надеюсь, это поможет.

 c.moveToFirst(); 

Эта строка перемещает курсор в первую строку.

 while(c.movetoNext) 

После выполнения этой строки кода курсор переместится в следующую строку (строка 2 для первого запуска цикла while). Таким образом, ко времени ввода кода в цикле курсор уже указывает на строку 2 и никогда не сможет получить доступ к Первая строка.

Попробуйте заменить цикл while таким образом

 do { // do something } while(c.movetoNext()) 

На самом деле вам не нужно вызывать c.moveToFirst (); вообще

Поздний ответ, но, надеюсь, полезен для других, которые находят эту страницу. Я использовал: "if () do {} while ();" петля. Функция moveToFirst () "возвращает false, если в курсоре не было строк. Функция «moveToNext ()» возвращает false в конце конца курсора:

 Cursor c = db.query(......); if (c.moveToFirst()) do { data = c.getString(0) // eg. get value from first column in cursor // do something more } while (c.moveToNext()); c.close(); 

(Что похоже на ответ TactMayers).

Intereting Posts
Использовать камеру в пейзаже, когда мое приложение находится в портрете Повтор фонового изображения для Android Доля базы данных SQLite между двумя приложениями Android? Создание пользовательского представления Включить Mock Locations в Android Marshmallow Фрагменты и действия – где я могу поместить свою логику приложения? Как новый класс свойств в API14 лучше, чем внутренние геттеры / сеттеры? Цепочный якорь для пути сертификации не найден с использованием SSL Вход в библиотеку «Библиотечный код Java» для приложений Android Java.lang.ClassNotFoundException после изменения ничего в проекте, но обновление eclipse android sdk Индивидуальные схемы URL-адресов iOS по сравнению со стандартами Universal Links и Android Как динамически установить фон TextView из файла Xml Почему Android-соглашение не следует за обычной Java Акселерометр останавливает доставку образцов, когда экран выключен на Droid / Nexus One даже с WakeLock Eclipse дает «Ошибка преобразования в формат Dalvik», а ant works