在sqlite上更新Flutter数据库

时间:2020-04-26 18:40:56

标签: sqlite flutter

我有一个正在处理的工作代码。 SQLITE上有一个数据库 我正在修改数据库,但是这些更改未显示在应用程序中。 我知道事实是没有编写用于更新数据库的代码。 怎么做?

我举一个例子说明我如何实现这一点。也许我朝着正确的方向采取了行动,但现在我已陷入僵局。

Future < Database > initDB() async {
  var databasesPath = await getDatabasesPath();
  var path = join(databasesPath, "database.sqlite");
  var exists = await databaseExists(path);

  if (!exists) {
    print("Creating new copy from asset");
    try {
      await Directory(dirname(path)).create(recursive: true);
    } catch (_) {}

    ByteData data = await rootBundle.load(join("assets", "database.sqlite"));
    var db = await openDatabase(path, version: 1, onUpgrade: _onUpgrade);
    List < int > bytes =
      data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);

    await File(path).writeAsBytes(bytes, flush: true);
  } else {
    print("Opening existing database");
  }
  var db = await openDatabase(path, readOnly: true);
  return db;
}
// UPGRADE DATABASE TABLES
void _onUpgrade(Database db, int oldVersion, int newVersion) {
  if (oldVersion < newVersion) {
    db.execute("What i don't know here?;");
  }
}
Future < Database > get database async {
  if (_database != null) return _database;
  _database = await initDB();
  return _database;
}

0 个答案:

没有答案