【问题标题】:How to query a SQL Lite database using flutter sqflite如何使用颤振 sqflite 查询 SQLite 数据库
【发布时间】:2020-07-30 10:24:27
【问题描述】:

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

【问题讨论】:

    标签: database sqlite flutter sqflite


    【解决方案1】:

    SQFlite 就像 SQLite 具有 Aggregate Functions 一样,要执行求和函数,您可以将其作为 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 小部件中使用此函数的结果,您只需使用 FutureBuilder

    此外,如果您想使用 WHERE 语句或 Group By 语句等参数,只需添加它并将参数作为数组传递。

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

    【讨论】:

      【解决方案2】:

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

      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 ...', ... )
      

      【讨论】:

        猜你喜欢
        • 2020-06-22
        • 2021-09-25
        • 2019-10-14
        • 1970-01-01
        • 2019-11-30
        • 1970-01-01
        • 2020-06-01
        • 2020-03-19
        • 2020-06-12
        相关资源
        最近更新 更多