Cursor

Cursor can handle one or more rows based on source query. Cursor is map of data and will contain as many rows as source(select) query returns. So if query returns hundred rows, these rows are inserted to Cursor and Cursor contain these hundred rows.

You can imagine Cursor as map of data with dynamic size(similar as List) where data are placed as « rows ». Each row has own row id(row number, we can say some pointer) that is generated gradually as they are inserted to Cursor and you can simply move between rows with this number. Implicitly each Cursor has « actual pointer » positioned before first row(-1 position) so if you call c.getString(0)expection will be thrown because there is nothing to retrieve.

So always you have to call cursor.moveToFirst() that prepare Cursor for reading and if is empty, method return false because there is no row.

The best looking way I’ve found to go through a cursor is the following:

Cursor cursor;
... //fill the cursor here

for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
    // do what you need with the cursor here
}

Don’t forget to close the cursor afterwards

cursor.close();

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Articles récents
Commentaires récents
fatima sur Bienvenue !
AdminDroid sur Bienvenue !
fatima sur Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :