Android / Java: Wie man der letzten Zeile Werte in sqlite?
Hallo, ich verwende eine sqlite-Datenbank in meine android-Anwendung, und ich habe eine Frage:
Ich werde versuchen, den letzten Wert der text(das ist die collumn) von der letzten Zeile aus der Tabelle TABLE_XYZ... aber es funktioniert nicht.. ich bin mit dem folgenden code...was mache ich falsch?
andere Frage ist, wie kann ich wieder zwei Werten statt nur einem, wenn ich möchte mehrere Werte aus der letzten Zeile wie Spalte text und Nachricht?
private static final String KEY_MESSAGE = "message";
private static final String KEY_TEXT = "text";
...
String selectQuery= "SELECT * FROM " + TABLE_XYZ+" ORDER BY column DESC LIMIT 1";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
cursor.close();
return cursor.getString( cursor.getColumnIndex(KEY_TEXT) );
EDIT:
ich hade einige Fehler in meiner Abfrage, habe ich es behoben, aber immer noch Fehler:
String selectQuery= "SELECT * FROM " + TABLE_XYZ + " ORDER BY " + KEY_TEXT+ " DESC LIMIT 1";
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
String str = cursor.getString( cursor.getColumnIndex(KEY_TEXT );
cursor.close();
return str;
beim Debuggen kann ich sehen, dass der cursor nicht haben, die richtigen Werte drinnen... aber wenn ich versuche den Wert in der Spalte mit dem Befehl "cursor.getString( cursor.getColumnIndex(KEY_TEXT );"... es funktioniert nicht...
- wenn Sie möchten, dass nur 1 Datensatz, den Sie verwenden sollten, BESCHRÄNKEN Sie sich meine Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
schließen Sie den cursor, bevor man es Wert ist,
versuchen Sie dies :
cursor.moveToFirst()
vor Anreise Wert.Aus der android-Dokumentation: http://developer.android.com/reference/android/database/Cursor.html
abstract void close()
Schließt den Cursor, die Freigabe all seiner Ressourcen und damit komplett ungültig.
Schließen Sie den cursor, bevor returningthe string.
Wie @whatever5599451 sagte, Sie sollten nicht schließen Sie den cursor, bevor Sie Wert. Auch versuchen, eine Abfrage wie diese:
Können Sie die Spalten auch festlegen, wieder nur 1 Zeile.
Diese zurückbringen wird nur die Spalte, die Sie Sortieren nach Sie können auch angeben, weitere Spalten Beispiel:
*
bedeutet markieren Sie alle Spaltenum die Letzte Spalte, verwenden Sie den Namen der Spalte an, anstelle des " * " (* bedeutet alle Felder)
@Steve: tun Sie dies:
dann bekommen Sie nur eine Zeichenfolge mit dem letzten Datensatz enthält nur die Rechte Spalte