Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android SQLite: Which query ("query" or "rawQuery") is faster?

I am developing one android database application . I just want to know which code execute faster and what is the difference between them?

Query - 1 =

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

Query - 2 =

db.query(USER_TABLE_NAME, ALL_COLUMNS, "user_id = " + userId, null, null, null, null);
like image 806
Chirag Avatar asked Sep 10 '25 19:09

Chirag


2 Answers

Use query.

Android precompile queries and using too many different raw queries may cause performance issue.

Use rawQuery only when absolutely needed.

Also, both your example have a MAJOR security issue of SQL Injection.

You should sanitize the userId.

The most obvious thing to do is let Android do it by using:

db.query(USER_TABLE_NAME, ALL_COLUMNS, "user_id = ?", new String[] {userId}, null, null, null);
like image 62
Daniele Segato Avatar answered Sep 12 '25 10:09

Daniele Segato


Looking at SQLiteDatabase.java in the android source shows that the query(..) ends up calling the QueryBuilder to build the query as a single string and then it essentially calls rawQuery(). They should be roughly equivalent, assuming that you also did the same work to build your own statement.

like image 29
dangVarmit Avatar answered Sep 12 '25 11:09

dangVarmit