flutter 删除数据库而不卸载应用程序

问题描述 投票:0回答:2

我们正在测试我们的应用程序,并且只有一个 sqlite 版本。因为我们不想在上线之前升级数据库。在测试过程中,无论谷歌会接受还是拒绝,我们都会发布一些稳定的生产版本。 Google 接受了,现在我们发现下载了 1000 多个应用程序。

但是我们的测试还没有完成,我们要求用户手动卸载。现在我们不知道他们开始下载哪个版本。

因此,如果不卸载应用程序,他们的数据库不是最新的,将会发生错误。

因此,在即将发布的版本中,我们希望强制删除他们的数据库并创建最新的数据库方案。对于后续发布,如果我们需要更改,我们将使用 onUpdate 创建新版本的数据库。

有没有更好的方法?

flutter sqlite
2个回答
0
投票

我认为这段代码会对你有所帮助

 void _createTableCompanyV2(Batch batch) {
      batch.execute('DROP TABLE IF EXISTS Company');
      batch.execute('''CREATE TABLE Company (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT,
        description TEXT
    )''');
    }

参考链接


0
投票
  Future<String> deleteDbCreateDbDirectory() async {
    final databasePath = await getDatabasesPath();
    final path = join(databasePath, "you_db_name");

    // make sure the folder exists
    // ignore: avoid_slow_async_io
    if (await Directory(dirname(path)).exists()) {
      await deleteDatabase(path);
      await File(path).delete();
    } else {
      try {
        await Directory(dirname(path)).create(recursive: true);
      } catch (e) {
        // ignore: avoid_print
        //print(e);
      }
    }
    ////print("path: $path");
    return path;
  }
© www.soinside.com 2019 - 2024. All rights reserved.