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
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