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

标签 flutter sqlite sqflite

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 列表删除多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69975958/

相关文章:

android - 加快对 SQLite 数据库的查询

java - 直接在 SQLite 数据库中使用 getter 和 setter

flutter - 如何使用 Flutter 将数据 SQLite(离线)发送到服务器 MySQL?

dart - Flutter DataBaseException(表 category_Table 没有名为 category_id 的列)

flutter - 当我的小部件使用字符串ID进行引用时,如何将参数传递给有状态的小部件?

dart - flutter 导航到新屏幕不起作用

sqlite - 如何将 Sqlite 与 LiveCode 结合使用

database - 有没有办法使用 sqflite 检查 flutter 应用程序中的数据库版本?

flutter - 按下后退按钮时如何在后台发送应用程序

dart 常量创建的参数必须是常量表达式