【发布时间】:2019-11-20 13:43:32
【问题描述】:
我正在使用 DBHelper 类,并且在我的其他类之一中调用 getter,以便如果 DB 为空,它会对其进行初始化。 在另一种方法中,我将从休息端点返回的数据插入数据库并获得上述异常。我想也许因为记录已经存在,我得到了例外。在那种情况下,我想了解数据库何时创建以及生命周期。大多数网络上关于 sqflite 的文章都是基于 CRUD 操作的。
Future<Database> get db async{
if(_db == null){
_db = await initializeDb();
}
return _db;
}
Future<Database> initializeDb() async{
Directory dir = await path_pro.getApplicationDocumentsDirectory();
String path = dir.path + 'csr';
var dbCsr = await openDatabase(path, version: 1, onCreate: _createDb);
return dbCsr;
}
void _createDb(Database db, int newVersion) async{
await db.execute(
"CREATE TABLE $tblName($colPropId INTEGER PRIMARY KEY, $colCityName TEXT, $colPropName TEXT, $colPropAddr TEXT)"
);
}
Future<int> insertProp(Map<String, dynamic> map) async{
Database db = await this.db;
var result = await db.insert(tblName, map);
return result;
}
在我的其他课程中,我将其称为如下:
DBHelper().db
DBHelper().insertProp(element[i]);
谢谢
【问题讨论】: