如何使用 flutter sqflite 查询 SQL Lite 数据库
How to query a SQL Lite database using flutter sqflite
我已经按照这个答案设置了一个数据库: 但我想获取我正在创建的数据库的列中所有项目的总和,然后在 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 一样 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"];
}
要在您的文本小部件中使用此函数的结果,您只需使用 FutureBuilder。
此外,如果您想使用 WHERE 语句或 Group By 语句等参数,只需将其添加并将参数作为数组传递即可。
final sum = await db.rawQuery("SELECT sum(id_word) as sum FROM Word WHERE id_word = ?", [5]);
我已经按照这个答案设置了一个数据库:
参考相同的答案,您可以执行以下操作:
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 一样 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"];
}
要在您的文本小部件中使用此函数的结果,您只需使用 FutureBuilder。
此外,如果您想使用 WHERE 语句或 Group By 语句等参数,只需将其添加并将参数作为数组传递即可。
final sum = await db.rawQuery("SELECT sum(id_word) as sum FROM Word WHERE id_word = ?", [5]);