未处理的异常:DatabaseException(表UsernameTable没有 列,名称为RememberMe(SQLite代码1):,而在编译时:INSERT OR 替换为UsernameTable(username,RememberMe)值(?,?),(OS 错误-2:没有此类文件或目录))sql'INSERT OR REPLACE INTO UsernameTable(username,RememberMe)VALUES(?,?)'args [term @ melfs, 1]}
我升级了数据库。我在UsernameTable
表中添加了新列。但这不起作用。我在这个数据库中已经有很多记录。我无法drop
,所以我该如何向现有数据库添加新列。我使用了Sqflite
initDb() async {
io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "HelperDatabase.db");
var theDb = await openDatabase(path, version: 4, onCreate: _onCreate, onUpgrade: _onUpgrade);
return theDb;
}
OnUpgrade方法。
void _onUpgrade(Database db, int oldVersion, int newVersion)async{
if(oldVersion != 5){
await db.execute("ALTER TABLE UsernameTable ADD COLUMN rememberMe INTEGER DEFAULT 0");
}
}
onCreate方法
void _onCreate(Database db, int version) async {
await db.execute("""CREATE TABLE UsernameTable(username STRING)""");
}