final Future<Database> database_1v = openDatabase(
    join(await getDatabasesPath(),'students_database.db'),
    onCreate: (db,version)=>db.execute("CREATE TABLE students(id TEXT PRIMARY KEY, name TEXT, score INTEGER)"),
    version: 1
  );
 
  //1.1版本
  final Future<Database> database_11v = openDatabase(
      join(await getDatabasesPath(),'students_database.db'),
      onCreate: (db,version) {
        switch(version){
          case 1:
            db.execute("ALTER TABLE students ADD age INTEGER)");
            break;
          default:
            db.execute("CREATE TABLE students(id TEXT PRIMARY KEY, name TEXT, score INTEGER , age INTEGER");
        }
      },
      version: 11
  );
  //1.1版本
  final Future<Database> database_12v = openDatabase(
      join(await getDatabasesPath(),'students_database.db'),
      onCreate: (db,version) {
        switch(version){
          case 1:
            db.execute("ALTER TABLE students ADD age INTEGER)");
            break;
          case 11:
            break;
          default:
            db.execute("CREATE TABLE students(id TEXT PRIMARY KEY, name TEXT, score INTEGER , age INTEGER");
        }
      },
      version: 12
  );
 展开
 作者回复: 这里有一个bug:你这里的switch-case只能执行单条更新语句,如果数据库版本差的比较多,每个版本都有更新,这样就不行了
另外更正一个原文中的错误:数据库的升级是在onUpgrade回调函数中完成的