J'ai une table question_table
et une ImageButton
( arrière ). J'ai besoin d'obtenir le dernier enregistrement inséré de la base de données après avoir cliqué sur le Retour .
Ma ligne contient les colonnes suivantes: question
, optionA
, optionB
, optionC
, optionD
, et j'ai besoin des données pour une utilisation sur mon Activity
. Je crée une méthode dans la base de données mais cela ne fonctionne pas.
Voici le code pour référence:
Extrait de MySQLiteHelper.java :
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
depuis 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();
}
}
});
Veuillez me donner un indice.
sqlite
devrait trier tous les enregistrements par leur id (lent) avant de renvoyer le résultat, Stephen Nguyen a donné une requête optimale avecDESC
etLIMIT 1
Je pense que la réponse principale est un peu verbeuse, utilisez simplement ceci
la source
Pour obtenir le dernier enregistrement de votre table ..
la source
Voici un exemple simple qui renvoie simplement la dernière ligne sans avoir besoin de trier quoi que ce soit dans une colonne:
la source
Je pense que ce serait mieux si vous utilisez la requête de méthode de la classe SQLiteDatabase au lieu de la chaîne SQL entière, ce qui serait:
Les deux derniers paramètres sont ORDER BY et LIMIT.
Vous pouvez en voir plus sur: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
la source
Si vous avez déjà le curseur, voici comment vous pouvez obtenir le dernier enregistrement du curseur:
la source
Simplement simple, vous pouvez vous déplacer avec
Cursor
moveToLast (); la méthode permet de passer au dernier enregistrementla source
Je voulais maintenir ma table tout en tirant sur une ligne qui me donne la dernière valeur dans une colonne particulière du tableau. Je cherchais essentiellement à remplacer la
LAST()
fonction dans Excel et cela a fonctionné.la source
Supposons que vous recherchiez la dernière ligne de la table dbstr.TABNAME, dans une colonne INTEGER nommée "_ID" (par exemple BaseColumns._ID), mais qu'il pourrait s'agir de toute autre colonne de votre choix.
la source
Une autre option consiste à utiliser la
LAST_VALUE()
fonction SQLites de la manière suivante.Compte tenu de ce tableau:
Vous pouvez obtenir le dernier statut de chaque objet avec la requête suivante
Le résultat ressemblerait à:
la source
dans sqlite, il y a une table appelée sqlite_sequence, cette table contient le nom de la table et son dernier numéro d'identification (si l'id est incrémenté automatiquement).
Donc, pour obtenir la dernière ligne d'un tableau, il suffit de mettre:
la source
Les réponses précédentes supposent qu'il existe une colonne ID d' entier incrémentée , donc
MAX(ID)
donne la dernière ligne. Mais parfois, les touches sont de type texte , non ordonnées de manière prévisible. Donc, pour prendre les 1 ou N dernières lignes (# Nrows #), nous pouvons suivre une approche différente :la source