Flutter SQFLITE如何根据两个字段删除数据条目
基于SQFLITE同时按ID和DATETIME字段删除数据的正确实现
问题场景
原有单条件删除代码(按ID删除):
await _database!.delete( "row", where: "id = ?", whereArgs: [id], );
尝试同时按ID和DATETIME字段删除时,使用Dart的&&拼接条件字符串导致代码无效:
await _database!.delete( "row", where: "id = ?" && "DateTime = ?", // 此处写法错误 whereArgs: [id, day], );
正确实现方式
SQFLITE的delete方法中,where参数需要传入合法的SQL WHERE子句字符串,应使用SQL的逻辑运算符AND来连接多个条件,而非Dart语言的&&运算符:
await _database!.delete( "row", where: "id = ? AND DateTime = ?", whereArgs: [id, day], );
说明
- SQL中用
AND表示逻辑与,用来指定需要同时满足的多个条件 - 之前的错误写法会在Dart层面执行布尔运算,最终生成的
where值并非合法的SQL语句,因此无法触发正确的删除逻辑
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

