2013-09-04 3 views
0

J'essaie d'interroger une base de données avec le code:rawQuery selectionArgs ne fonctionne pas

Cursor cursor = db.rawQuery("select * from "+MoneyDBOpenHelper.TABLE_RECORD+" where "+ MoneyDBOpenHelper.ACCOUNT_ID+" = ?",new String []{"1"});

Mais il ne fonctionne pas du tout, je ne questionne aucune donnée.


Alors que j'abandonne l'utilisation de selectionArgs avec le code:

Cursor cursor = db.rawQuery("select * from "+MoneyDBOpenHelper.TABLE_RECORD+" where "+ MoneyDBOpenHelper.ACCOUNT_ID+" = 1",null});

Il travaille, et j'ai les données que je want.I pense que ces 2 lignes de code doivent composer la même fonction mais ils ne l'ont pas fait, est-ce que je fais quelque chose de mal?

Répondre

0

1 est un nombre. "1" est une chaîne.

Ceci est une limitation de l'API dabase Android; vous devez utiliser des paramètres uniquement pour les chaînes.

+0

vous voulez dire que je ne peux pas utiliser de nombre dans selectionArgs? ou est-il possible d'utiliser number dans selectionArgs? –

+0

Tous les paramètres seront remplacés par une chaîne. Vous devez utiliser quelque chose comme 'CAST (? AS INTEGER)' dans l'instruction SQL pour le convertir en un nombre; il est plus facile de mettre des nombres directement dans l'instruction SQL. –