Разница между rawquery и execSQL в базе данных android sqlite

36

Какая разница между использованием rawquery и execSQL? При написании запроса в активности Android, когда использовать rawquery и когда использовать execSQL?

Теги:

2 ответа

64
Лучший ответ

Из документации API:


void execSQL (String sql)

Выполните один оператор SQL, который НЕ является SELECT или каким-либо другим оператором SQL, который возвращает данные.

void execSQL (String sql, Object[] bindArgs)

Выполните один оператор SQL, который НЕ является SELECT/INSERT/UPDATE/DELETE.

Документация несовместима, но они ведут себя одинаково. Документация последнего более подробно.


Cursor rawQuery (String sql, String[] selectionArgs)

Запускает предоставленный SQL и возвращает курсор по результирующему набору.


Использование для rawQuery:

Использование для execSQL:

  • У вас есть "инструкции" для базы данных. Например, CREATE TABLE (или любой другой оператор CREATE, например CREATE INDEX)), DROP, PRAGMA, который задает свойства, а не возвращает их,...
  • INSERT, UPDATE или DELETE, когда вас не интересует количество измененных строк или идентификатор строки последней вставки.
  • Все, что полагается на выполнение инструкции.
  • 0
    понятно ... execSQL ничего не возвращает и используется для создания, обновления и т. д., а rawQuery возвращает курсоры и т. д.
  • 0
    Большое спасибо за подробное объяснение :) Ура !!!
11

если вы хотите что-то выполнить в базе данных без его вывода (например, создать/изменить таблицы), используйте execSQL, но если вы ожидаете некоторых результатов в ответ на ваш запрос (например, выберите записи), затем используйте rawQuery

Ещё вопросы

Сообщество Overcoder
Наверх
Меню