4

I am learning to implement databases in android , i came across this query() and rawQuery() , i want to know the difference between them and which one is efficient in android

1 Answers1

8

From API Doc:

public void execSQL (String sql)

Execute a single SQL statement that is NOT a SELECT or any other SQL statement that returns data.

public Cursor rawQuery (String sql, String[] selectionArgs)

Runs the provided SQL and returns a Cursor over the result set.

If you want to e.g. CREATE TABLE that does not return values you can use execSQL(), if you want a Cursor as result use rawQuery() (=SELECT statements).

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.

Himanshu Agarwal
  • 4,623
  • 5
  • 35
  • 49
  • thank you very much , that is the kind of explanation i am waiting for. –  Nov 03 '14 at 09:25