2011-04-21 4 views
0

Dans mon application, j'ai une table DB avec cette structure: utilisateur TEXT | texte jetonAndroid SQLite problème étrange

Quand je fais la demande pour vérifier si cet utilisateur existe dans le tableau, comme ça:

String whereClause = COLUMN_USER + "==\"" + userName + "\""; 
Cursor c = db.query(TABLE_USERS, new String[]{COLUMN_USER, COLUMN_TOKEN}, whereClause, null, null, null, null); 

Il fonctionne pour tous les utilisateurs. Mais si variable userName est "user", j'ai récupéré tous les enregistrements. On dirait que sqllite vérifie la structure de la table, et renvoie à tous les enregistrements le nom de cos de cette colonne est égal à ma valeur que j'utilise - utilisateur.

Répondre

1

Je vous suggère paramétrez les arguments dans votre clause where:

String whereClause = COLUMN_USER + "=?"; 
String [] whereArgs = { userName }; 
Cursor c = db.query(TABLE_USERS, new String[]{COLUMN_USER, COLUMN_TOKEN}, whereClause, whereArgs, null, null, null); 
+0

Merci! Ça marche pour moi! – Redwid

0

Une bidouille simple pour se débarrasser de ce problème serait simplement de joindre la requête dans:

if (userName =! "user") { 
//code here 
} else { 
//open dialog about invalid username 
} 

Même si je suis sûr qu'il ya une solution plus élégante. L'effacement des données d'entrée devrait être fait de toute façon, et si vous vérifiez déjà les invalides, ajoutez simplement "user" dans la liste des rejets?

+0

App est client pour un service en ligne. Presque tous les noms devraient être valides. – Redwid