Що таке курсор у розробці Android?


76

Я переглядав деякі коди в Інтернеті щодо підключення до бази даних, пошуку. Я бачив Cursor cur1= moveToFirst()у багатьох кодах, я хотів би знати, для чого потрібен курсор і чому ми використовуємо його, moveToFirst()оскільки я новачок в android.


Відповіді:


145

Курсор - це Інтерфейс, який представляє двовимірну таблицю будь-якої бази даних. При спробі отримати деякі дані за допомогою оператора SELECT , база даних спочатку створить об'єкт CURSOR і поверне вам його посилання.

Покажчик цієї повертається посилання вказує на 0 - й місце , яке інакше називається , як перед першим адресою в Cursor , тому , якщо ви хочете retrive дані від курсора, ви повинні спочатку перейти на перший запис , тому ми повинні використовувати moveToFirst

Коли викликає moveToFirst () метод на Cursor , він приймає покажчик курсору на перше місце . Тепер ви можете отримати доступ до даних, наявних у першому записі


64

Простими словами, курсор - це інтерфейс, який повертає колекцію даних вашого запиту. moveToFirst()використовується для вказівки позиції курсора з місця, де ви хочете отримати дані від курсору. Є методи moveToLast(), moveToNext(), moveToPrevious(), з moveToPosition(position)допомогою якого ви можете перебрати курсор за бажаним шляху.

Наприклад, у вас є дані у вашому курсорі

Lalit
Rithesh
Paresh
Chandra
  • moveToFirst()- Якщо ви використовуєте, cursor.moveToFirst()тоді в цьому випадку він буде вказувати Lalit, оскільки це перші дані у вашому курсорі. Щоб отримати наступні дані з курсору, ви можете використовувати moveToNext().

  • moveToLast()- Це вказуватиме Чандру як поточні дані у курсорі. Щоб отримати попередні дані з курсору, ви можете використовувати moveToPrevious()


27

Курсор представляє результат запиту і в основному вказує на один рядок результату запиту. Таким чином Android може ефективно буферизувати результати запиту; оскільки йому не потрібно завантажувати всі дані в пам’ять.

Щоб отримати кількість елементів результуючого запиту, використовуйте getCount()метод.

Для переміщення між окремими рядками даних можна використовувати методи moveToFirst()and moveToNext(). isAfterLast()Метод дозволяє перевірити , якщо кінець результату запиту було досягнуто.

Курсор надає набрані методи get * (), наприклад getLong(columnIndex), getString(columnIndex)для доступу до даних стовпців для поточної позиції результату. "ColumnIndex" - це номер стовпця, до якого ви отримуєте доступ.

Курсор також надає getColumnIndexOrThrow(String)метод, який дозволяє отримати індекс стовпця для імені стовпця таблиці.

Курсор потрібно закрити за допомогою close()виклику методу. Запит повертає об'єкт курсору.


Цікаво, чи всі дані були отримані до моменту створення курсору, чи це може бути відкладено, поки ви не викличете такі методи, як getCount () та moveTo * ()
geekley

10

Курсор схожий на ResultSet у Java, він має рядки, що повертаються деякими запитами з його покажчиком. moveToFirst(), moveToNext()і moveToPosition(position)встановлює покажчик на бажане положення.



2

Використовуйте інтерфейс курсору як збір даних.

Це схоже на Cursorв PL/SQLв тому , що вона має одну або кілька рядків , що повертаються деякі запити з його покажчиком.

У Cursorінтерфейсі доступні наступні методи, які перебирають Cursor, встановлюючи Cursor pointerпотрібне положення:

  • moveToFirst ()
  • moveToLast ()
  • moveToNext ()
  • moveToPrevious ()
  • moveToPosition (позиція)

0

Інтерфейс курсору забезпечує випадковий доступ для читання-запису до набору результатів, що повертається запитом до бази даних.

Реалізації курсору не потрібно синхронізувати, тому код, що використовує курсор із декількох потоків, повинен виконувати власну синхронізацію під час використання курсору.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.