50

What is the exact difference between using rawquery and execSQL ?? While writing a query in android activity, when to use rawquery and when to use execSQL ?

2 Answers 2

95

From API documentation:


void execSQL (String sql)

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

void execSQL (String sql, Object[] bindArgs)

Execute a single SQL statement that is NOT a SELECT/INSERT/UPDATE/DELETE.

The documentation is inconsistent but they behave both the same. Documentation of the latter is more in depth.


Cursor rawQuery (String sql, String[] selectionArgs)

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


Uses for rawQuery are:

Uses for execSQL are:

  • You have "instructions" for the database. Like CREATE TABLE (or any other CREATE statement, e.g. CREATE INDEX), DROP, PRAGMAs that set properties rather than returning them, ...
  • INSERT, UPDATE or DELETE when you're not interested in the amount of rows modified or the row id of the last insert.
  • Anything else that relies on executing a statement.
Sign up to request clarification or add additional context in comments.

1 Comment

got it clear .. execSQL doesnt return anything and used for creating,updating etc .. and rawQuery returns cursors etc.
12

if you want to execute something in database without concerning its output (e.g create/alter tables), then use execSQL, but if you are expecting some results in return against your query (e.g. select records) then use rawQuery

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.