Копирование .sqlite db в каталог документов на телефоне - PullRequest
0 голосов
/ 02 октября 2019

У меня есть подпрограмма, которая копирует локальную базу данных SQLite (из папки активов Android Studio) в каталог документов телефона.

У меня проблема в том, что этот код не очень хорош. Иногда база данных копируется полностью, а иногда частично или вообще не копируется. Это очень глючит, и я понятия не имею, как улучшить его.

Много раз я получаю сообщение о том, что определенные таблицы не могут быть найдены.

Вот код, который я использую:

  copyDB() async
  {
   // Construct a file path to copy database to
    Directory documentsDirectory = await      getApplicationDocumentsDirectory();
    String path = join(documentsDirectory.path,     DBAssistanceClass.databaseName);
print('The DB path is: '+ path);

// Only copy if the database doesn't exist
    if (FileSystemEntity.typeSync(path) == FileSystemEntityType.notFound)
    {
      try
      {
        print('Copying DB...');
        // Load database from asset and copy
        ByteData data = await rootBundle.load(
            join('assets', DBAssistanceClass.databaseName));
        List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
        // Save copied asset to documents
        await File(path).writeAsBytes(bytes);

        }
      catch (error)
        {

        print(error);

        }
     }

}

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

1 Ответ

1 голос
/ 02 октября 2019

Я думаю, если важно, чтобы очистить при записи файла. Существует Открытие базы данных активов документ в sqflite с полным примером.

...