#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.