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);
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);
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With