繁体   English   中英

如何使用 flutter sqflite 查询 SQL Lite 数据库

[英]How to query a SQL Lite database using flutter sqflite

我已经按照这个答案设置了一个数据库: How to do a database query with SQFlite in Flutter但我想获取我正在创建的数据库的列中所有项目的总和,然后在 TextLabel 上显示该数字。 我已经看过但找不到任何关于在哪里可以找到解决方案的信息

参考相同的答案,您可以执行以下操作:

List<Map> result = await db.query(DatabaseHelper.table);

int total = 0;    
// print the results
result.forEach((row) => total = total + row.price);

或者使用原始查询,就像这样;

Future calculateTotal() async {
  var dbClient = await db;
  var result = await dbClient.rawQuery("select sum(price) as Total from my_table");
}

int _total;

void _calcTotal() async{
  var total = (await db.calculateTotal())[0]['Total'];
  print(total);
  setState(() => _total = total)
}

@override
Widget build(BuildContext context) {
  ...  
  Text(_total != null ? _total : 'waiting ...', ... )

SQFlite 就像 SQLite 具有聚合函数并执行总和 function 您可以将其作为 rawQuery 执行如下:

Future<int> sumItems() async {
    final sum = await db.rawQuery("SELECT sum(id_word) as sum FROM Word");
    //print(sum[0]["sum"]);
    return sum[0]["sum"];
  }

要在 Text 小部件中使用此 function 的结果,您只需使用FutureBuilder

此外,如果您想像 WHERE 句子或 Group By 句子一样使用 arguments,只需将其添加并传递 arguments 作为数组。

    final sum = await db.rawQuery("SELECT sum(id_word) as sum FROM Word WHERE id_word = ?", [5]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM