Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Из документации 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, когда вас не интересует количество измененных строк или идентификатор строки последней вставки.
  • Все, что полагается на выполнение инструкции.

Ответ 2

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