Миграция с SQLCipher V1 на Room DB V2 при обновлении приложения:
Я создаю два приложения с одинаковым именем пакета:
- В первом приложении я использую SQLCipher, используя «Pass_Phrase» (версия_1 БД) для операций CRUD, используя
Java
. - Во втором приложении я просто хотел перейти с SQLCipher на Room (БД версии_2), а также прочитать данные из SQLCipher и поместить их в БД Room, используя
Kotlin
.
Я завершил первое приложение и застрял на этапе миграции во втором приложении. Нужна ваша помощь. Большое спасибо!
1 ответ
Для 2. вы можете использовать миграцию, для этого база данных Room передается ей как SupportSQLiteDatabase.
Таким образом, вы могли бы либо
- откройте исходную (зашифрованную) базу данных, а затем получите к ней доступ, как вы (сделали), возможно, выгружая данные в курсоры для загрузки в версию Room, или
-
ATTACH
исходной базы данных в базу данных Room (черезSupportSQLiteDatabase
хexecSQL
метод ), а затем скопируйте данные с помощью SQL и, наконец,DETACH
исходная база данных.
Когда база данных подключена, ее компоненты, такие как таблицы, доступны (вы должны использовать заданное имя схемы, чтобы различать компоненты с одинаковыми именами). См . ПРИЛОЖЕНИЕ
- Обратите внимание, что ATTACHSQL будет соответствовать строкам
ATTACH 'the_path_to_the_database' AS 'the_schema_name_to_use' KEY 'the_key'
-
the_path_to_the_database
путь к базе данных, которая будет прикреплена -
the_schema_name_to_use
может быть произвольным значением с некоторыми ограничениями (не основным или временным). -
the_key
являющийся секретным ключом
-
Ответ здесь включает пример, в котором используется первый метод (в соответствии с классом MainDatabase, хотя и на Java (что не требует больших усилий для преобразования в Kotlin) )