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回调函数中完成的