2010-12-15 53 views
0

J'ai ajouté un espace après "WHERE" dans ma requête SQL basé sur le conseil dans my earlier question.
Cependant, maintenant mon application obtient une "Force Close".App obtient Force Fermer lors de l'exécution d'une requête SQL

Cursor c = db.rawQuery("SELECT * FROM sharelist WHERE " + "category" + "=" + category,null); 
+1

N'a pas obtenu ce que vous voulez dire. Décrivez votre question correctement. Donnez les détails de l'erreur. – Mudassir

+0

Cela semble être un commentaire sur sa question précédente: http://stackoverflow.com/questions/4448512/its-not-returning-the-true-value –

Répondre

1

Vous devez créer des requêtes comme ceci:

Cursor c = db.rawQuery("SELECT * FROM sharelist WHERE category=?", 
         new String[] {category}); 

Cela va faire la bonne citation pour vous et vous faire économiser des attaques des injections SQL.

De plus, chaque fois que vous voyez une fermeture de force, une exception non gérée y est associée. Vous pouvez le voir dans le LogCat (ceci est disponible dans la perspective Debug d'Eclipse). Le type et le message de l'exception sont des informations inestimables pour le débogage de l'erreur.

+0

Si je peux mais avec ma propre question sur cette réponse s'il vous plaît, kgiannakakis. J'ai eu des problèmes chroniques avec Android renvoyant des curseurs vides (pas de SQLiteExceptions) quand j'ai fait mes requêtes de cette façon. Chaque fois que je les change dans l'autre sens (sans utiliser de point d'interrogation), cela fonctionne à nouveau. Que pourrais-je faire de mal? J'ai fini par construire manuellement des chaînes de requête et désinfecter ma propre entrée, car cela a été un tel problème. –

0

Vous devriez faire votre requête comme kgiannakakis suggéré.

Pour votre problème, vous devez entourer votre valeur category avec des guillemets simples tels que:

Cursor c = db.rawQuery("SELECT * FROM sharelist WHERE " + "category" + "='" + category + "'",null);