Zai*_*SMJ 2 sqlite dart flutter
我通过使用sqflite插件在Flutter中使用Sqlite数据库。通过下面提到的链接,我能够成功创建数据库并在其中执行CRUD操作。
问题是,一旦创建数据库,我就无法修改旧表。为了在“ 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中修改先前创建的表而不删除数据库该怎么办?
好吧,我设法解决了我的问题。在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)