Flutter SQFlite 按整数 ID 列表删除多个

Flutter SQFlite Delete Multiple by List of integer IDs

Flutter 中的 SQFlite

以下代码按给定 ID 删除一行

Future<int> delete(int id) async {
Database db = await instance.database;
return await db.delete(myTable, where: 'id = ?', whereArgs: [id]);
}

但是如何同时删除多个ID?

我有 变量 列表: List<int> toBeDeleted = [5, 4, 8, ...]

我尝试在 whereArgs 中给出一个列表,但它不起作用。我正在寻找的是能够“一次删除选定的多个项目”。

您可以使用 SQLite IN 子句:

await db.delete(myTable, where: 'id IN (?,?,?)', whereArgs: [id1, id2, id3]);

由于列表的大小可以改变,所以有合适的数字或?可以使用以下解决方案解决: List.filled(inArgsCount, '?').join(',')

var list = ['5', '4', '8'];
return await db.delete('myTable',
  where: 'id IN (${List.filled(list.length, '?').join(',')})',
  whereArgs: list);

这里有更多信息 https://github.com/tekartik/sqflite/blob/master/sqflite/doc/sql.md#parameters