What is use of Cursor in Android Development?

AndroidAndroid Cursor

Android Problem Overview


I was going through some of the codes on the internet regarding the database connection, retrieval. I saw Cursor cur1= moveToFirst() in many codes, I wanted to know what is the use of a cursor and why we use moveToFirst() as I am new to android.

Android Solutions


Solution 1 - Android

Cursor is the Interface which represents a 2 dimensional table of any database. When you try to retrieve some data using SELECT statement, then the database will first create a CURSOR object and return its reference to you.

The pointer of this returned reference is pointing to the 0th location which is otherwise called as before first location of the Cursor, so when you want to retrive data from the cursor, you have to first move to the first record so we have to use moveToFirst

When you invokes moveToFirst() method on the Cursor, it takes the cursor pointer to the first location. Now you can access the data present in the first record

Solution 2 - Android

In simple words, Cursor is a Interface whice returns collection of your query data. moveToFirst() is used to point the cursor position from where you want to get data from your cursor. There are methods moveToLast(), moveToNext(), moveToPrevious(), moveToPosition(position) by which you can iterate through your cursor by desired way.

For example, you have data in your Cursor

Lalit
Rithesh
Paresh
Chandra
  • moveToFirst() - If you use cursor.moveToFirst() then in this case it will point Lalit, as it is the first data in your cursor. To get the next data from cursor you can use moveToNext().

  • moveToLast() - This will point Chandra as the current data in your cursor. To get the previous data from cursor you can use moveToPrevious()

Solution 3 - Android

A Cursor represents the result of a query and basically points to one row of the query result. This way Android can buffer the query results efficiently; as it does not have to load all data into memory.

To get the number of elements of the resulting query use the getCount() method.

To move between individual data rows, you can use the moveToFirst() and moveToNext() methods. The isAfterLast() method allows to check if the end of the query result has been reached.

Cursor provides typed get*() methods, e.g. getLong(columnIndex), getString(columnIndex) to access the column data for the current position of the result. The "columnIndex" is the number of the column you are accessing.

Cursor also provides the getColumnIndexOrThrow(String) method which allows to get the column index for a column name of the table.

A Cursor needs to be closed with the close() method call. A query returns a Cursor object.

Solution 4 - Android

Cursor is like ResultSet in java, it has rows returned by some queries with its pointer. moveToFirst(), moveToNext() and moveToPosition(position) sets the pointer to desired postion.

Solution 5 - Android

A cursor is what any SQL query result will be stored in.

Solution 6 - Android

>Use the Cursor interface as a data collection.

It is similar to a Cursor in PL/SQL in the way that it holds one or more rows returned by some queries with its pointer.

The following methods are available in the Cursor interface which iterate through the Cursor, setting the Cursor pointer to the desired position:

  • moveToFirst()
  • moveToLast()
  • moveToNext()
  • moveToPrevious()
  • moveToPosition(position)

Solution 7 - Android

Cursor interface provides random read-write access to the result set returned by a database query.

Cursor implementations are not required to be synchronized so code using a Cursor from multiple threads should perform its own synchronization when using the Cursor.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRithesh MView Question on Stackoverflow
Solution 1 - AndroidChandra SekharView Answer on Stackoverflow
Solution 2 - AndroidLalit PoptaniView Answer on Stackoverflow
Solution 3 - AndroidSumit SharmaView Answer on Stackoverflow
Solution 4 - AndroidjeetView Answer on Stackoverflow
Solution 5 - AndroidRadhika ParmarView Answer on Stackoverflow
Solution 6 - AndroidRohit GoyalView Answer on Stackoverflow
Solution 7 - AndroidNeeraj UpadhyayView Answer on Stackoverflow