Таблица передачи Android Sqlite из одной базы данных в другую

У меня есть требование в моем приложении для Android.

Уже существует база данных A, в которой есть таблица T. В следующем выпуске приложения я хочу создать новую базу данных B и ДВИГАТЬСЯ мою таблицу от A до B С УЧАСТИЕМ для всех существующих данных.

Я предполагаю, что есть способ получить дамп из существующей базы данных и сохранить его в файле ресурсов. А затем используйте этот файл для восстановления таблицы в новой базе данных.

Невозможно сохранить эти данные в памяти, так как они могут перейти в несогласованное состояние, если приложение будет убито между ними.

Я не могу найти какой-либо четко определенный способ сделать это, потратив некоторое время на поиск в документации / на форумах.

Пожалуйста помоги.

один из способов - записать записи в формате .txt, а затем перенести их в другой БД.

Lucifer 24.04.2018 04:00

Извините, я не понимаю ваше требование. Вы хотите перенести все существующие данные из db A в db B?

chaunv 24.04.2018 04:01

@chaunv: не все существующие данные, только таблица от db A до db B.

Yash 24.04.2018 04:13
2
3
975
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете добиться этого с помощью команды ATTACH sqlite. Во-первых, указав путь к первой базе данных.

private static String FIRST_DB_PATH = context.getDatabasePath("Sample.sqlite").toString();

Затем вы прикрепляете его к secondDb

SQLiteDatabase secondDB = secondDBHandler.getWritableDatabase();
secondDB.execSQL("ATTACH DATABASE '" + FIRST_DB_PATH + "' AS tempDb");

Затем выполните запрос на вставку. ПРИМЕЧАНИЕ: Вы используете secondDB как основной

secondDB.execSQL("INSERT INTO main." + SeconDB_table_name +  "SELECT * FROM tempDb."+ FirstDB_table_name );

Затем, наконец, отсоедините первый db

secondDB.execSQL("DETACH tempDb"); 

Надеюсь это поможет

Обновлено:

Сделайте это для сброса стола

secondDB.execSQL("DROP TABLE IF EXISTS main." + SeconDB_table_name);

Хорошо, вот как создать таблицу для secondDB как копию firstDb

secondDB.execSQL("CREATE TABLE main." + SeconDB_table_name + " AS SELECT * FROM tempDb." + FirstDB_table_name);

Если в комментарий вы имеете в виду отбросить первую таблицу после перемещения ее во вторую таблицу, а затем отбросить ее перед отсоединением

secondDB.execSQL("DROP TABLE IF EXISTS tempDb." + FirstDB_table_name);

попробую это. И мне нужно удалить эту таблицу из исходной базы данных. Где мне это делать? Я не могу поместить это непосредственно в onupgrade, так как он может быть вызван до того, как произойдет миграция

Yash 24.04.2018 04:16

эй, я должен отбросить исходный стол, а не новый.

Yash 24.04.2018 04:25

Вы имели в виду, что удалили первую таблицу DB? Зачем? ты предполагаешь это скопировать?

Android_K.Doe 24.04.2018 04:33

Не копировать, я хотел переместить. Извините, если я не был ясен вначале.

Yash 24.04.2018 04:35

Проверить отредактированный ответ. Если у вас все еще есть проблема. Позвольте нам продолжить обсуждение в чате.

Android_K.Doe 24.04.2018 04:58

Другие вопросы по теме