【发布时间】:2021-03-17 21:04:17
【问题描述】:
我只保留数据库中“favorite”表中添加到收藏夹的产品“productID”信息。我将此信息添加到表中没有问题。 (product表和favorite表是分开的。)但是当我想在表中列出所有喜欢的产品时,我找到了可以让我一一查询的代码。我需要的是一个可以将 List<int> productIDs 作为参数并将最喜欢的产品返回为 List<Map<String, dynamic>>> 的函数。我几乎到处找,但找不到。
我用来获取存储在favorite 表中的最喜欢的产品 ID 的函数:
Future<List<Map<String, dynamic>>> favProds() async{
List<int> IDs = new List<int>();
var db = await _getDatabase();
var result = await db.query(_favTable, orderBy: '$_columnProdID DESC');
for(Map incomingMap in result){
IDs.add(incomingMap['prodID']);
}
return _getFavProdsWithIDList(IDs);
}
这是我的函数,它以 ID 列表作为参数,并返回一个包含最喜欢的产品的列表作为地图:
Future<List<Map<String, dynamic>>> _getFavProdsWithIDList(List<int> IDs) async{
var db = await _getDatabase();
var result = await db.query("$_prodTable", where: '$_columnProdID = ?', whereArgs: IDs);
return result;
}
这是我使用它们时遇到的错误:
Unhandled Exception: DatabaseException(Cannot bind argument at index 8 because the index is out of range. The statement has 1 parameters.) sql 'SELECT * FROM urun WHERE urunID = ?' args [230, 180, 179, 20, 19, 18, 17, 2]}
从这个错误中,我们看到添加产品到favorite表是成功的。
【问题讨论】:
标签: database sqlite flutter dart async-await