对于长度为k的PK列表:

listPK = [1,2,3 ... k]

我当前正在运行一个for循环,并查询数据库k次以检查该项目是否存在于数据库中。

List<bool> isPresent(List listPK)async{
  final db = await database;
  List<bool> output = List.filled(listPK.length, false)
  for (var i = 0; i<listPk.length; i++){
    List<Map> result = await db.query('elements', where: "id = ?", whereArgs: listPk[i]);
    if (result[0] != null) {output[i] = true}
  }
}


想知道是否有更有效的方法来做到这一点。我只想知道ID是否存在于数据库中。

最佳答案

使用WHERE ... IN在一个 call 中检查所有ID。

String listQuery = listPK.join(', '); // "1, 2, 3, ..., k"
String query = 'SELECT * FROM table_name WHERE id IN ($listQuery);`;
List<Map> result = await db.rawQuery(query);

关于flutter - 检查SQFLITE数据库中是否存在PK列表中的哪些PK,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59805649/

10-11 19:51