Разница между rawquery и execSQL в базе данных android sqlite - PullRequest
46 голосов
/ 12 марта 2012

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

Ответы [ 2 ]

82 голосов
/ 12 марта 2012

Из документации 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 s, которые задают свойства, а не возвращают их, ...
  • INSERT, UPDATE или DELETE, когда вас не интересует количество измененных строк или идентификатор строки последней вставки.
  • Все остальное, что зависит от выполнения оператора.
11 голосов
/ 12 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...