本文介紹了OnUpgradSQFLITE:未處理的異常:數(shù)據(jù)庫異常(表UsernameTable沒有名為RememberMe的列(Sqlite代碼1):的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
未處理的異常:數(shù)據(jù)庫異常(表UsernameTable沒有
名為RememberMe(Sqlite代碼1):的列,編譯時:插入或
替換為UsernameTable(用戶名,RememberMe)值(?,?),(OS
錯誤-2:沒有這樣的文件或目錄))SQL‘INSERT或REPLACE INTO
UsernameTable(用戶名,RememberMe)值(?,?)‘Args[術語@Melfs,
1]}
我升級了數(shù)據(jù)庫。我向UsernameTable
表中添加了新列。但這并不管用。我在這個數(shù)據(jù)庫里已經(jīng)有這么多的記錄了。我不能drop
,所以我如何向現(xiàn)有數(shù)據(jù)庫添加新列。我使用了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)""");
}
推薦答案
您需要確保數(shù)據(jù)庫版本匹配才能訪問數(shù)據(jù)庫。驗證是否正在調(diào)用似乎傳遞新版本的_onUpgrade()
方法。如果您考慮在SQFlite上打開時進行自動版本管理,也可以使用該功能。
這篇關于OnUpgradSQFLITE:未處理的異常:數(shù)據(jù)庫異常(表UsernameTable沒有名為RememberMe的列(Sqlite代碼1):的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,