Android: транзакции SQLite при использовании ContentResolver

Цель: база данных обновления от данных XML

Процесс:

  • Запустите транзакцию
  • Удалите все существующие строки из таблиц
  • На каждый основной элемент проанализированного XML вставляют строку в основную таблицу и получают PK
  • На каждого ребенка основного элемента вставляют запись в 2-ю таблицу, обеспечивающую FK от предыдущего шага
  • Транзакция фиксации

Довольно стандартный материал до операций дб. Проблема состоит в том, что операции CRUD не сделаны в ContentProvider а скорее использование ContentResolver таким образом, вставка, например, похожа resolver.insert(CONTENT_URI, contentValues). ContentResolver API, кажется, ничего не имеет, принадлежал транзакции, и я не могу использовать bulkInsert так как я вставляю в 2 таблицы периодически (плюс, я хочу иметь delete в транзакции также).

Я думал о регистрации моего специализированного ContentProvider как слушатель при помощи registerContentObserver но с тех пор ContentResolver#acquireProvider методы скрыты, как я получаю правильную ссылку?

Я не повезло?

32
задан Bostone 9 February 2010 в 18:09
поделиться

1 ответ

Хорошо, чтобы это не было бесцельно: единственный способ, который я могу придумать, - это кодировать startTransaction и endTransaction как запросы на основе URL. Что-то вроде ContentResolver.query (START_TRANSACTION, null, null, null, null) . Затем в ContentProvider # запрос на основе зарегистрированного URL-адреса вызова начала или завершения транзакции

4
ответ дан 27 November 2019 в 20:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: