sqlite - 你如何解决错误“类型'Session'不是'Map类型的子类型' 使用对象更新 Sqlite 数据库时?
问题描述
我正在尝试使用创建时最初发送给它的对象类型来更新我拥有的 sqlite 数据库。当我尝试更新它时,我不断收到问题标题中详细说明的错误。为什么我会在更新时收到此问题,我将如何解决?它很好地创建了数据库并很好地存储了初始数据。如果我遗漏了什么,请告诉我!谢谢!
我在哪里创建新的 Session 对象并将其发送过来以更新数据库
onTap: () {
Session session = new Session();
session.selectedQuarterStatus = quarter[index].status;
session.selectedQuarter = quarter[index].quarter;
SessionDBProvider.sessionDB.updateSession(session);
Navigator.pop(context);
},
这是创建数据库的地方。没什么疯狂的
newSession(Session newSession) async {
final db = await database;
var res = await db.rawInsert('''
INSERT INTO session (
selected_quarter, status
) VALUES (?, ?)
''', [
newSession.selectedQuarter,
newSession.selectedQuarterStatus
]);
return res;
}
这是我尝试使用 Session 对象更新函数的地方,它出错了
Future<dynamic> updateSession(session) async {
final db = await database;
var res = await db.update("session", session);
}
解决方案
我假设您的 Session 模型类有一个toMap()
方法。您需要map()
在更新数据库时使用您的模型。它应该如下所示:
Future<dynamic> updateSession(session) async {
final db = await database;
var res = await db.update("session", session.toMap());
}
您可以从官方文档中阅读更多内容。
推荐阅读
- c++ - 使用 dda 算法调试光线投射
- javascript - ReactJS:使用状态不适用于仅一种状态
- sql-server - Proc SQL 不返回任何列。内部联接
- python - 如何创建将日期转换为整数的函数?
- vue.js - vue3:i18n 插件在 json 文件中找不到本地化
- javascript - 如何使用第二个数组元素查找数组中多个元素的索引,然后使用结果匹配第三个数组的索引(Javascript)
- python - 在 Alebmic 中重命名 ENUM 标签
- android - Android Paging 3 跳转滚动
- swift - 多人游戏的 Game Center 回合超时
- react-native - AppsFlyer/Adjust/AppMetrica 不适用于 Expo?