Flutter中SQFlite的CRUD操作:如何实现待办项更新?
实现SQFlite待办项更新的两种方式
针对你的需求,这里提供两种和现有代码风格匹配的更新实现方式:
方式一:使用SQFlite内置的update方法
和你用insert添加数据的风格一致,通过构造更新字段的Map来操作:
final db = await _getDatabse(); // 构造要更新的字段键值对 Map<String, dynamic> updateData = { 'description': updatedTodo.description, 'isDone': updatedTodo.isDone == true ? 'true' : 'false', }; // 执行更新,通过id匹配待更新条目 await db.update( 'todo', updateData, where: 'id = ?', whereArgs: [updatedTodo.id], );
updateData只需包含你要修改的字段,无需写入id(除非你要修改id本身)where和whereArgs用于精准定位目标条目,避免误修改其他数据
方式二:使用rawUpdate原生SQL语句
和你用rawDelete的风格一致,直接编写SQL语句实现更新:
final db = await _getDatabse(); await db.rawUpdate( 'UPDATE todo SET description = ?, isDone = ? WHERE id = ?', [ updatedTodo.description, updatedTodo.isDone == true ? 'true' : 'false', updatedTodo.id ], );
这种方式适配复杂更新场景,注意参数顺序要与SQL中的?一一对应
内容的提问来源于stack exchange,提问作者Nuaiman Ashiq
相关产品推荐
相关产品推荐

