Ich habe einen Tisch question_table
und einen ImageButton
( Zurück ). Ich muss den zuletzt eingefügten Datensatz aus der Datenbank abrufen, nachdem ich auf Zurück geklickt habe .
Meine Zeile enthält die folgenden Spalten: question
, optionA
, optionB
, optionC
, optionD
, und ich brauche die Daten für die Verwendung auf meinem Activity
. Ich erstelle eine Methode in der Datenbank, aber sie funktioniert nicht.
Hier ist Code als Referenz:
MySQLiteHelper.java- Extrakt:
public List<ObjectiveWiseQuestion> getLastInsertQuestion()
{
// long index = 0;
List<ObjectiveWiseQuestion>LocwiseProfileList=new ArrayList<ObjectiveWiseQuestion>();
db = getReadableDatabase();
Cursor cursor = db.query(
"sqlite_sequence",
new String[]{"seq"},
"name = ?",
new String[]{TABLE_QUESTION},
null,
null,
null,
null );
if (cursor.moveToFirst())
{
do {
ObjectiveWiseQuestion owq= new ObjectiveWiseQuestion();
owq.setQuestion(cursor.getString(2));
owq.setOptionA(cursor.getString(3));
owq.setOptionB(cursor.getString(4));
owq.setOptionC(cursor.getString(5));
owq.setOptionD(cursor.getString(6));
owq.setCorrectOption(cursor.getString(7));
LocwiseProfileList.add(owq);
} while(cursor.moveToNext());
db.close();
}
return LocwiseProfileList;
}
OnClickListner
von AddQuestionActivity.java
imgBack.setOnClickListener( new View.OnClickListener()
{
@Override
public void onClick(View v)
{
msg();
emptyFormField();
try {
final List<ObjectiveWiseQuestion> LocWiseProfile = db.getLastInsertQuestion();
for (final ObjectiveWiseQuestion cn : LocWiseProfile)
{
db=new MySQLiteHelper(getBaseContext());
db.getWritableDatabase();
txtQuestion.setText(cn.getQuestion());
txtOptionA.setText(cn.getOptionA());
txtOptionB.setText(cn.getOptionB());
txtOptionC.setText(cn.getOptionC());
txtOptionD.setText(cn.getOptionD());
txtCorrectOption.setText(cn.getCorrectOption());
db.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
});
Bitte geben Sie mir einen Hinweis.
sqlite
alle Datensätze nach ihrer ID (langsam) sortiert werden sollten, bevor das Ergebnis zurückgegeben wird. Stephen Nguyen gab eine optimale Anfrage mitDESC
undLIMIT 1
Ich denke, die beste Antwort ist etwas ausführlich. Verwenden Sie diese einfach
quelle
Um die letzte Aufzeichnung von Ihrem Tisch zu erhalten ..
quelle
Hier ist ein einfaches Beispiel, das einfach die letzte Zeile zurückgibt, ohne etwas aus einer Spalte sortieren zu müssen:
quelle
Ich denke, es wäre besser, wenn Sie die Methodenabfrage aus der SQLiteDatabase-Klasse anstelle der gesamten SQL-Zeichenfolge verwenden.
Die letzten beiden Parameter sind ORDER BY und LIMIT.
Weitere Informationen finden Sie unter: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
quelle
Wenn Sie den Cursor bereits haben, können Sie auf diese Weise den letzten Datensatz vom Cursor erhalten:
quelle
Ganz einfach, Sie können mit
Cursor
moveToLast () verschieben. Methode bietet, um zum letzten Datensatz zu wechselnquelle
Ich wollte meine Tabelle beibehalten, während ich in einer Zeile zog, die mir den letzten Wert in einer bestimmten Spalte in der Tabelle gibt. Ich wollte im Wesentlichen die
LAST()
Funktion in Excel ersetzen und das hat funktioniert.quelle
Angenommen, Sie suchen nach der letzten Zeile der Tabelle dbstr.TABNAME in einer INTEGER-Spalte mit dem Namen "_ID" (z. B. BaseColumns._ID), können aber auch eine beliebige andere Spalte sein.
quelle
In SQLite gibt es eine Tabelle mit dem Namen sqlite_sequence. Diese Tabelle enthält den Tabellennamen und die letzte ID-Nummer (wenn die ID automatisch inkrementiert wird).
Um die letzte Zeile in einer Tabelle zu erhalten, setzen Sie einfach:
quelle
Bei den vorherigen Antworten wird davon ausgegangen, dass eine inkrementelle Ganzzahl- ID-Spalte vorhanden ist, sodass
MAX(ID)
die letzte Zeile angegeben wird. Aber manchmal sind die Schlüssel vom Texttyp und nicht vorhersehbar geordnet. Um also die letzten 1 oder N Zeilen (# Nrows #) zu nehmen, können wir einen anderen Ansatz verfolgen :quelle
Eine andere Möglichkeit besteht darin, die SQLites-
LAST_VALUE()
Funktion folgendermaßen zu verwenden.Angesichts dieser Tabelle:
Mit der folgenden Abfrage können Sie den letzten Status jedes Objekts abrufen
Das Ergebnis würde folgendermaßen aussehen:
quelle