Je tente de créer une méthode qui me permettra d'extraire une valeur de la dernière ligne d'une base de données, puis de l'insérer dans un Champ EditText (Ceci est une valeur que l'utilisateur ne changera pas si souvent, il serait donc utile que quand il le fait, il reste actif quand il reviendra dessus).Récupération d'une seule colonne de la dernière ligne dans sqlite/Android en utilisant ORDER ID desc limite 1
Ma méthode, basée sur une méthode similaire je pour obtenir le total d'une colonne spécifique, est en tant que telle:
public String getBase() {
Cursor mCursor = mDb.rawQuery(
"SELECT base FROM table constants ORDER ID desc limit 1", null);
if (mCursor.moveToFirst()) {
return mCursor.getString(0);
}
return mCursor.getString(0);
Comme je l'ai dit, je me suis basé cela sur une méthode similaire, que j'ai trouvé après chercher sur Internet. Je comprends la plupart, mais je n'ai aucune idée de ce que signifient les 0 dans les instructions de retour (ou la méthode moveToFirst).
Quoi qu'il en soit, dans mon OnClickListener (le bouton l'utilisateur presserait pour enregistrer cette valeur db), je donne les résultats suivants (editBase est le champ EditText Je veux remplir):
editBase.setText(cDbHelper.getBase());
Si je cours le programme sans cette déclaration, il fonctionne très bien et la valeur économise à la DB. Dès que j'essaie de le faire fonctionner, j'ai une force proche. Aucune suggestion?
Merci.
EDIT: Merci pour les réponses. Avec quelques conseils d'un ami, j'ai fini par utiliser "ORDER BY ... desc limite 1" à la place. Ce fut la dernière méthode:
public double getBase() {
final double DEFAULT_BASE = 0;
Cursor mCursor = mDb.rawQuery(
"SELECT base FROM constants ORDER BY _id desc limit 1", null);
if (mCursor.getCount() == 0)
return DEFAULT_BASE;
else
mCursor.moveToFirst();
return mCursor.getDouble(0);
Quel est votre message d'erreur? Quelle éclipse (ou adb) a dit quand il se bloque? – ykatchou