首页 > 解决方案 > 将 .sqlite db 复制到电话上的文档目录

问题描述

我有一个例程将本地 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);

        }
     }

}

这是为了颤振,我在飞镖文档中找不到任何可以帮助的东西。

标签: flutterdartsqflite

解决方案


我认为在编写文件时刷新是否很重要。sqflite中有一个Opening an assets database文档,里面有一个完整的例子。


推荐阅读