2010-10-10 6 views
2

J'essaie d'écrire une requête de sélection d'une table unique dans SQLite DB dans mon application où les données existent.Comment écrire cette requête pour SQLite pour Android App?

C'est le SQL.table a ces colonnes - id (Integer), start_time (ENTIER), catégorie (TEXTE)

select category from tuuserid_pref where id = (select max(id) from tuuserid_pref where start_time < '1242'); par la façon dont je veux lier la valeur indiquée dans 1242 que j'ai dans un Variable entière

J'ai écrit des sélections et des insertions et mises à jour sans paramètres de liaison et ils fonctionnent en utilisant les fonctions db.execSQL et db.rawQuery, mais ne peuvent pas comprendre les paramètres de liaison.

Toute aide est très appréciée.

Répondre

2

Vous devez modifier votre instruction select comme ceci:

select category from tuuserid_pref where id = 
(select max(id) from tuuserid_pref where start_time < ?); 

utiliser l'appel rawQuery suivant:

rawQuery(String sql, String[] selectionArgs) 

Passez votre variable dans le second paramètre enveloppé dans un String [], ce qui devrait donner vous quelque chose comme l'énoncé suivant:

db.rawQuery(sqlStatement, new String[] { String.valueOf(myInt) }); 

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

+0

ne l'appel de fonction db.execSQL retourner un objet curseur dans ce cas? – Aakash

+0

Désolé Aakash, dans ce cas vous voulez appeler rawQuery (String sql, String [] selectionArgs), qui vous renverra un objet Cursor. Je mettrai à jour ma réponse pour refléter ce changement. – McStretch

+0

Je l'ai fait et cela fonctionne ... merci.J'ai utilisé db.query au lieu de rawQyery – Aakash

Questions connexes