将.sqlite数据库复制到手机上的文档目录

时间:2019-10-02 11:02:37

标签: flutter dart sqflite

我有一个例程,可以将本地SQLite数据库(从Android Studio Assets文件夹中)复制到手机的文档目录中。

我的问题是此代码不是很好。有时数据库被完全复制,有时被部分复制或根本不复制。它非常容易出错,我不知道如何进行改进。

很多时候,我收到一条错误消息,提示找不到某些表。

这是我使用的代码:

  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 个答案:

答案 0 :(得分:1)

我认为在写入文件时刷新是否很重要。 sqflite中有一个Opening an asset database文档,其中包含完整的示例。