KIO
Kreative Ideen online

Mit einem Cursor können Sie die Datenbank lesen und in die Datenbank schreiben. Sie geben an, auf welche Daten Sie zugreifen möchten, und der Cursor ruft die relevanten Datensätze aus der Databse zurück. Sie können dann durch die vom Cursor ausgespritzten Recors avagate.

Sie erstellen einen Crsor mithilfe einer Datenbankabfrage. Mit einer Datenbankabfrage können Sie angeben, auf welche Datensätze Sie über die Datenbank zugreifen möchten. Als Beispiel können Sie sagen, dass Sie auf alle Datensätze aus einer DRINK-Tabelle oder nur auf einen bestimmten Datensatz zugreifen möchten. Diese Datensätze werden dann im Cursor zurückgegeben.

Die query()-Methode gibt ein Cursor-Objekt zurück.
Cursor Cursor = db.query(...);

Ein Beispiel – geben Sie alle Datensätze an einer Tabelle zurück:

Geben Sie die Werte in den Spalten _id, NAME und DESCRIPTION für jeden Datensatz in der TABELLE DRINK zurück.

/*Wir möchten die Werte in diesen Spalten zurückgeben
/*_id|NAME| beschreibung
/*Stellen Sie die letzten Parameter auf null
Cursor cursor = db.query("DRINK", neue String[] '"_id", "NAME", "DESCRIPTION",,null,null,null,null,null);

Um alle Datensätze aus einer particualr-Tabelle zurückzugeben, übergeben Sie den Namen der Tabelle als ersten Parameter der abfrage()-Methoden und aString-Array der Coumnnamen als zweiten. Sie legen alle anderen Paramtetes auf null fest, da Sie sie für diesen Abfragetyp nicht benötigen.

Cursor cursor = db.query("TABLE_NAME", neue String[]'"COLUMN1","COLUMN2"',null,null ,null,null,null;;

Retrun-Datensätze in einer particualar Reihenfolge

Wenn Sie Daten in Ihrer App in einer bestimmten Reihenfolge anzeigen möchten, verwenden Sie die Abfrage, um die Daten nach einer bestimmten Spalte zu sortieren. Dies kann nützlich sein, wenn Sie z. B. Getränkenamen in alphabetischer Reihenfolge anzeigen möchten.

Standardmäßig werden die Daten in der Tabelle in _id-Reihenfolge angezeigt, da dies die Reihenfolge war, in der die Daten eingegeben wurden.

Ausgewählte Datensätze zurückgeben

Sie können Ihre Daten filtern, indem Sie Bedingungen deklarieren, die das dat erfüllen muss.

Als Beispiel:

Cursor cursor = db.query("DRINK", new STRING[]'"_id","NAME","DESCRIPTION"', "NAME = ?", new String[] 'Latte',null,null,null;;

Der dritte und vierte Parameter in der Abfrage beschreiben die Konditinen, die die Daten erfüllen müssen.

Der dritte Parameter gibt die Spalte im Conditin an. Im obigen Beispiel möchten wir Datensätze zurückgeben, bei denen der Wert der NAME-Spalte "Latte" ist, daher verwenden wir "NAME = ?".
Wir möchten, dass der Wert in der NAME-Spalte gleich einem Wert ist, und der ? Symbol ist ein Platzhalter für diesen Wert.

Der vierte Parameter ist ein Array von Strings, das den Wert des Conditin angibt. Im obigen Beispiel möchten wir Datensätze aktualisieren, bei denen der Wert des NAME-Comlumns "Latte" ist, daher verwenden wir:

neue Zeichenfolge[]"Latte";

Die Bewertung der Bedingung muss ein Array von Strings sein, auch wenn die Spalte youure applayin te Bedingung, um eine andere Art von Daten zu enthalten.

Ein Beispiel:

Cursor cursor = db.query("DRINK", neue String[]'2_id","NAME","DESCRPTION"',"_id = ?new String[]'Integer.toString(1)',null,null,null;;

Um einen Datensatz von einem Cursor zu lesen, müssen Sie zuerst zu ihm navigieren

Sobald Sie einen Cursor haben, müssen Yu Werte daraus lesen…

Wenn Sie Avlues aus einem bestimmten Datensatz in acursor abrufen müssen, müssen Sie zuerst zu diesem Datensatz navigieren.

Navigieren von Cursorn

Es handelt sich um vier Manin-Methoden, mit denen Sie in einem Cursor durch die Datensätze navigieren:

  • moveToFirst()
  • moveToLast()
  • moveToPrevious()
  • moveToNext()

moveToFirst()Um
zum ersten Datensatz in einem curso zu wechseln, verwenden Sie die moveToFirst()-Methode. Diese Methode gibt einen Wert von true zurück, wenn sie einen Datensatz findet, und false, wenn der Cursor keine Datensätze zurückgefahren hat.

if(cursor.moveToFirst())

}

moveToLast()Um
zum letzten Datensatz zu wechseln, verwenden Sie die moveToLast()-Methode. Genau wie das moveToFirst() mehthod gibt es einen Wert von true zurück, wenn es einen Datensatz findet, und false, wenn er dies nicht tut:

if(cursor.moveToLast())

}

Um die Datensätze im Cursor zu durchlaufen, verwenden Sie die Methoden moveToPrevious() und moveToNext(
). Die moveToPrevious()-Methode verschiebt Sie zum Preivous-Datensatz im Cursor.

if(cursor.moveToPrevius())

}

Die moveToNext()-Methode funktioniert ähnlich wie die moveToPrevious()-Methode, mit der Ausnahme, dass Sie stattdessen zum nächsten Datensatz im Cursor verschoben werden:

if(cursor.moveToNext())

}

Abrufen von Cursorwerten

Sie rufen Werte aus einem aktuellen Cursordatensatz mit den Cursor-Methoden get*() ab:

  • getString()
  • getInt()

Die genaue Methode, die Sie verwenden, hängt vom Typ des Werts ab, den Sie abrufen möchten. Um einen aString zu erhalten, verwenden Sie die getString()-Methode. Jede der Methoden nimmt einen einzelnen Parameter an. Der Index der Spalte, deren Vale ou retrive möchten, beginnend bei 0.

Ein Beispiel (vollständiger Code für Kontext):


Paket eu.kio.starbuzz;

importieren android.app.Activity;
importieren android.database.Cursor;
importieren sie android.database.sqlite.SQLiteDatabase;
importieren android.database.sqlite.SQLiteException;
importieren android.database.sqlite.SQLiteOpenHelper;
importieren android.os.Bundle;
importieren android.widget.TextView;
importieren android.widget.ImageView;
importieren android.widget.Toast;

Public Class DrinkActivity erweitert die Aktivität

    öffentliche statische endgültige Zeichenfolge EXTRA_DRINKID = "drinkId";

    @Override
    geschützte void onCreate(Bundle savedInstanceState)
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_drink);

        Holen Sie sich das Getränk von der Absicht
        int drinkId = (Integer)getIntent().getExtras().get(EXTRA_DRINKID);

        Trinken = Drink.drink[drinkId];

        Erstellen eines Cursors
        SQLiteOpenHelper starbuzzDatabaseHelper = neuer StarbuzzDatabaseHelper(this);
        Versuch {
            SQLiteDatabase db = starbuzzDatabaseHelper.getReadableDatabase();
            Cursor cursor = db.query("DRINK", neue String[]"NAME","DESCRIPTION","IMAGE_RESOURCE_ID"',"_id = ? ", neue String[] 'Integer.toString(drinkId)',null,null,null);
            if(cursor.moveToFirst())

                Holen Sie sich die Getränkedetails vom Cursor
                Zeichenfolge nameText = cursor.getString(0);
                ZeichenfolgenbeschreibungText = cursor.getString(1);
                int photoId = cursor.getInt(2);

                Populate der Getränkename
                TextView-Name = (TextView)findViewById(R.id.description);
                /*name.setText(drink.getName());*/
                name.setText(nameText);

                Bevölkern Sie die Getränkebeschreibung
                TextView Beschreibung = (TextView)findViewById(R.id.description);
                /*description.setText(drink.getDescription());*/
                description.setText(descriptionText);

                Populate das Trinkbild
                ImageView photo = (ImageView)findViewById(R.id.photo);
                /*photo.setImageResource(drink.getImageResourceId());
                photo.setContentDescription(drink.getName());*/
                photo.setImageResource(photoId);
                photo.setContentDescription(nameText);

                cursor.close();
                db.close();
            }
        • catch (SQLiteException e)
            Toast toast = Toast.makeText(this, "Database unavailable", Toast.LENGTH_SHORT);
            toast.show();
        }
    }
}

Um mehr über queery() Methode zu erfahren:

https://developer.android.com/reference/android/databse/sqlite/SQLiteDatabse.html

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert