Ответ 1
Из http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html:
public Cursor rawQuery (String sql, String [] selectionArgs)
Запускает предоставленный SQL и возвращает курсор по набору результатов. Возвращает объект курсора, который помещается перед первой записью
по сравнению с:
public void execSQL (String sql, Object [] bindArgs)
Выполнить один оператор SQL, который не является запросом. Например, CREATE TABLE
, DELETE
, INSERT
и т.д.
Другими словами, SQL-запросы, которые возвращают таблицу, должны запускаться с rawQuery
, а те, которые не возвращают таблицы, должны запускаться с execSQL
.