Was ist die Verwendung von Cursor in der Android-Entwicklung?


76

Ich habe einige der Codes im Internet bezüglich der Datenbankverbindung und des Abrufs durchgesehen. Ich habe Cursor cur1= moveToFirst()in vielen Codes gesehen, ich wollte wissen, was die Verwendung eines Cursors ist und warum wir verwenden, moveToFirst()da ich neu bei Android bin.


Antworten:


144

Der Cursor ist die Schnittstelle, die eine zweidimensionale Tabelle einer beliebigen Datenbank darstellt. Wenn Sie versuchen, einige Daten mit der SELECT- Anweisung abzurufen , erstellt die Datenbank zunächst ein CURSOR- Objekt und gibt dessen Referenz an Sie zurück.

Der Zeiger dieser zurückgegebenen Referenz zeigt auf die 0. Position, die ansonsten wie vor der ersten Position des Cursors aufgerufen wird. Wenn Sie also Daten vom Cursor abrufen möchten, müssen Sie zuerst zum ersten Datensatz wechseln, damit wir moveToFirst verwenden können

Wenn Sie die moveToFirst () -Methode für den Cursor aufrufen, wird der Cursorzeiger zur ersten Position geführt . Jetzt können Sie auf die im ersten Datensatz vorhandenen Daten zugreifen


64

In einfachen Worten, Cursor ist eine Schnittstelle, die eine Sammlung Ihrer Abfragedaten zurückgibt. moveToFirst()wird verwendet, um die Cursorposition zu zeigen, von der aus Sie Daten von Ihrem Cursor abrufen möchten. Es gibt Methoden moveToLast(), moveToNext(), moveToPrevious(), moveToPosition(position)mit dem Sie über Ihren Cursor nach gewünschter Weise laufen können.

Zum Beispiel haben Sie Daten in Ihrem Cursor

Lalit
Rithesh
Paresh
Chandra
  • moveToFirst()- Wenn Sie cursor.moveToFirst()dann verwenden, zeigt es in diesem Fall auf Lalit, da es die ersten Daten in Ihrem Cursor sind. Um die nächsten Daten vom Cursor zu erhalten, können Sie verwenden moveToNext().

  • moveToLast()- Dies zeigt Chandra als die aktuellen Daten in Ihrem Cursor. Um die vorherigen Daten vom Cursor abzurufen, können Sie verwenden moveToPrevious()


27

Ein Cursor stellt das Ergebnis einer Abfrage dar und zeigt grundsätzlich auf eine Zeile des Abfrageergebnisses. Auf diese Weise kann Android die Abfrageergebnisse effizient puffern. da es nicht alle Daten in den Speicher laden muss.

Verwenden Sie die getCount()Methode, um die Anzahl der Elemente der resultierenden Abfrage zu ermitteln.

Um zwischen einzelnen Datenzeilen zu wechseln, können Sie die Methoden moveToFirst()und moveToNext()verwenden. Mit dieser isAfterLast()Methode kann überprüft werden, ob das Ende des Abfrageergebnisses erreicht wurde.

Cursor bietet * getippt get () Methoden, zum Beispiel getLong(columnIndex), getString(columnIndex)die Spaltendaten für die aktuelle Position des Ergebnisses zuzugreifen. Der "columnIndex" ist die Nummer der Spalte, auf die Sie zugreifen.

Cursor bietet auch die getColumnIndexOrThrow(String)Methode, mit der der Spaltenindex für einen Spaltennamen der Tabelle abgerufen werden kann.

Ein Cursor muss mit dem close()Methodenaufruf geschlossen werden. Eine Abfrage gibt ein Cursor-Objekt zurück.


Ich frage mich, ob alle Daten zum Zeitpunkt der Erstellung des Cursors abgerufen wurden oder ob sich dies verzögern kann, bis Sie Methoden wie getCount () und moveTo * ()
aufrufen

10

Der Cursor ähnelt ResultSet in Java und enthält Zeilen, die von einigen Abfragen mit dem Zeiger zurückgegeben werden. moveToFirst(), moveToNext()Und moveToPosition(position)setzt den Zeiger auf die gewünschte Postion.



2

Verwenden Sie die Cursor- Oberfläche als Datenerfassung.

Es ähnelt a Cursorin PL/SQLder Art, wie es eine oder mehrere Zeilen enthält, die von einigen Abfragen mit dem Zeiger zurückgegeben werden.

Die folgenden Methoden stehen in der CursorBenutzeroberfläche zur Verfügung, die durch die durchlaufen und die gewünschte Position Cursoreinstellen Cursor pointer:

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

0

Die Cursorschnittstelle bietet zufälligen Lese- / Schreibzugriff auf die von einer Datenbankabfrage zurückgegebene Ergebnismenge.

Cursor-Implementierungen müssen nicht synchronisiert werden, daher sollte Code, der einen Cursor aus mehreren Threads verwendet, bei Verwendung des Cursors eine eigene Synchronisierung durchführen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.