Android SQLite: quelle requête ("query" ou "rawQuery") est la plus rapide?

je développe une application de base de données android . Je veux juste savoir quel code exécute le plus rapidement et quelle est la différence entre eux?

requête-1=

db.rawQuery("select * from user_table where user_id =" + userId, null);

requête-2=

db.query(USER_TABLE_NAME, ALL_COLUMNS, "user_id = " + userId, null, null, null, null);
25
demandé sur Chirag 2012-01-12 09:56:59
la source

2 ответов

Utiliser la requête.

les requêtes précompilées Android et l'utilisation de trop de requêtes brutes différentes peuvent causer des problèmes de performance.

N'utilisez rawQuery qu'en cas d'absolue nécessité.

En outre, les deux votre exemple ont un problème de sécurité majeur de L'Injection SQL.

Vous devriez désinfecter l'userId.

la chose La plus évidente à faire est de laisser Android le faire en utilisant:

db.query(USER_TABLE_NAME, ALL_COLUMNS, "user_id = ?", new String[] {userId}, null, null, null);
16
répondu Daniele Segato 2013-04-09 19:00:18
la source

en regardant la base de données Sqlitedata.java dans la source android montre que la requête(..) finit par appeler le QueryBuilder pour construire la requête sous forme d'une chaîne simple et ensuite il appelle essentiellement rawQuery(). Ils devraient être à peu près équivalents, en supposant que vous avez aussi fait le même travail pour construire votre propre énoncé.

6
répondu dangVarmit 2013-11-09 01:23:14
la source

Autres questions sur