' 使用对象更新 Sqlite 数据库时?,sqlite,flutter,flutter-dependencies"/>

首页 > 解决方案 > 你如何解决错误“类型'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);
  }

标签: sqliteflutterflutter-dependencies

解决方案


我假设您的 Session 模型类有一个toMap()方法。您需要map()在更新数据库时使用您的模型。它应该如下所示:

Future<dynamic> updateSession(session) async {
  final db = await database;
  var res = await db.update("session", session.toMap());
}

您可以从官方文档中阅读更多内容。


推荐阅读