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

Zai*_*SMJ 2 sqlite dart flutter

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

Sqflite插件

Sqflite教程-YouTube播放列表

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

void _onCreate(Database db, int newVersion) async {
    await db.execute(
        "CREATE TABLE tabEmployee($idPk INTEGER PRIMARY KEY, employeeName TEXT)");
  }
Run Code Online (Sandbox Code Playgroud)

为了在sqflite中修改先前创建的表而不删除数据库该怎么办?

Zai*_*SMJ 5

好吧,我设法解决了我的问题。在dlohani注释和“ 如何向Android SQLite数据库添加新列”链接的帮助下。

我创建了一个新方法“ _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;");
    }
  }
Run Code Online (Sandbox Code Playgroud)