Flutter-修改Sqlite表而不删除数据库

时间:2018-12-26 07:13:52

标签: sqlite dart flutter

我正在通过使用sqflite插件在Flutter中使用Sqlite数据库。通过下面提到的链接,我能够成功创建数据库并在其中执行CRUD操作。

Sqflite Plugin

Sqflite Tutorial - Youtube Playlist

问题是,一旦创建数据库,我就无法修改旧表。为了在“ tabEmployee”表中获得新列,我必须删除数据库并重新创建它。

value: string

我该怎么做才能在sqflite中修改以前创建的表而不删除数据库?

1 个答案:

答案 0 :(得分:0)

我设法解决了我的问题。在dlohani评论和How to add new Column to Android SQLite Database链接的帮助下。

我创建了一个新方法“ _onUpgrade”,并将其称为“ openDatabase”的参数,并更改了版本号。 以下是我的相关代码:

initDb() async {
    Directory documentDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentDirectory.path, 'maindb.db');
    var ourDb = await openDatabase(path, version: 2, onCreate: _onCreate, onUpgrade: _onUpgrade);
    return ourDb;
  }

  // UPGRADE DATABASE TABLES
  void _onUpgrade(Database db, int oldVersion, int newVersion) {
    if (oldVersion < newVersion) {
      db.execute("ALTER TABLE tabEmployee ADD COLUMN newCol TEXT;");
    }
  }