我们正在测试我们的应用程序,并且只有一个 sqlite 版本。因为我们不想在上线之前升级数据库。在测试过程中,无论谷歌会接受还是拒绝,我们都会发布一些稳定的生产版本。 Google 接受了,现在我们发现下载了 1000 多个应用程序。
但是我们的测试还没有完成,我们要求用户手动卸载。现在我们不知道他们开始下载哪个版本。
因此,如果不卸载应用程序,他们的数据库不是最新的,将会发生错误。
因此,在即将发布的版本中,我们希望强制删除他们的数据库并创建最新的数据库方案。对于后续发布,如果我们需要更改,我们将使用 onUpdate 创建新版本的数据库。
有没有更好的方法?
我认为这段代码会对你有所帮助
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
)''');
}
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;
}