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

Har*_*dik 2 sqlite flutter sqflite

Flutter 中的 SQFlite

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

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

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

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

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

ale*_*xtk 7

您可以使用 SQLiteIN子句:

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

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

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

更多信息请参见 https://github.com/tekartik/sqflite/blob/master/sqflite/doc/sql.md#parameters