Как импортировать файл .sql в базу данных Android room?

#android #sql #android-room

Вопрос:

Кто-нибудь знает, как импортировать загруженный файл sql в базу данных Android через room? У меня есть файл .sql в телефоне Android, который экспортируется из базы данных mysql. Я хочу импортировать файл .sql в базу данных sql Android. Я пытаюсь использовать комнату Android JetPack. Я проверяю официальный сайт:https://developer.android.google.cn/обучение/хранение данных/комната/создание представлений, но не нахожу способа сделать это.

Содержимое моего файла .sql выглядит следующим образом:

 DELETE FROM NewsInfo WHERE id = '20210524210624';
INSERT INTO NewsInfo VALUES ('20210524210624','2','aaa','bbb',3,'','','','en','push','2021-05-24 21:06:24');
 

Итак, кто-нибудь знает, как импортировать загруженный файл sql в комнату на Android?

Заранее спасибо

Ответ №1:

Лучший способ, который я знаю, — это извлечь фактический объект бд из комнаты, в которой есть функция ExecSQL (). И поток в файле .sql для каждой строки db.execSQL(line); (редактировать) Если бы я знал, что эта информация недоступна, я бы опубликовал пример, но на самом деле я не мог найти его сам.

 RoomDatabase database = ...
SupportSQLiteDatabase db = database.getOpenHelper().getWritableDatabase();

db.beginTransaction();
db.execSQL(line);
db.endTransaction();
 

Комментарии:

1. Как получить фактический объект бд из комнаты? В базе данных класса RoomDatabase, похоже, нет функции ExecSQL()

2. Кажется, не нужны db.beginTransaction(); и db.endTransaction(); с которыми не будет работы.

Ответ №2:

Вы можете просто вызвать метод запроса в своем экземпляре базы данных.

 appDatabase.query("YOUR INSERT QUERY")
 

Поэтому вызывайте описанный выше метод для каждого запроса, который вы получаете в файле .sql.