Как читать "старый" sqlite в флаттере? - PullRequest
0 голосов
/ 21 мая 2019

Я переписал свое существующее приложение для Android, используя флаттер.

Можно ли получить доступ к старой базе данных, созданной моим старым приложением? Если я сделаю SELECT для старой таблицы, я не получу никаких данных.

Старое приложение:

private final static String DB_NAME = "oweapp";

новое приложение:

String path = join(documentsDirectory.path, "oweapp.db");

1 Ответ

0 голосов
/ 21 мая 2019

Если вы предоставляете базу данных в папке ресурсов, вы должны сначала скопировать базу данных на устройство. Если нет, открытие базы данных во внешнем хранилище устройства (как вы делаете) должно работать.

ByteData data = await rootBundle.load("assets/oweapp.db");
List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);

final directory = await getDatabasesPath();
String dbPath = join(directory, "oweapp.db");
await File(dbPath).writeAsBytes(bytes);

// After that you can do:
var db = await openDatabase(dbPath);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...