Android Content Provider - Использование метода запроса для вставки, удаления и обновления - PullRequest
0 голосов
/ 28 октября 2018

Я изучаю контент-провайдеров, читая Основы Android для разработчиков (Версия 1) .

В разделе «11.1 Обмен данными через контент-провайдеров» / «Метод query ()» есть примечание, в котором говорится

Примечание. Методы вставки, удаления и обновления предоставляются для удобство и наглядность. Технически, метод запроса может обрабатывать все запросы, включая запросы на вставку, удаление и обновление данных.

Как можно использовать метод запроса для вставки / удаления / и обновления данных? Метод запроса имеет следующую подпись и не принимает пользовательских строк SQL.

public Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder){}

Мне не удалось найти какие-либо ресурсы, показывающие, как это можно сделать. Кажется, все используют предоставленные методы.

1 Ответ

0 голосов
/ 28 октября 2018

Честно говоря, это очень плохая работа в этом учебном пособии. Все, что он сделает, это запутает людей.

Я предполагаю, что они имеют в виду, что в query() нет ничего волшебного, что заставляет его выполнять только операторы SQL SELECT. A ContentProvider - это фасад & ndash; Вы можете использовать его для хранения и извлечения практически любого содержимого, а не только SQLite.

Итак, вы можете использовать свой query() метод:

  • Изучите Uri
  • Ищите его в форме content://your.authority/something/insert/put/data/here
  • Разобрать Uri, чтобы получить значения put, data и here
  • Вставьте их в таблицу под заранее определенными столбцами
  • Вернуть пустое MatrixCursor

Или может:

  • Изучите Uri
  • Ищите его в форме content://your.authority/something/insert
  • Вставить строку, используя projection для столбцов и selectionArgs в качестве значений для этих столбцов
  • вернуть пустое MatrixCursor

Я не знаю, почему кто-то так поступил, но это, безусловно, возможно.

...