モケラ

Tech Sheets

mokelab

Flutterのsqfliteでデータを取得する

最終更新日:2019-11-30

データを追加したら、次は取得してみましょう。やはりAndroidのSQLiteDatabaseと使い方はほぼ同じです。

Future<List<Account>> _getAllAccount(Database db) async {
  List<Map> results = await db.query("account");
  // map to account list
  return results.map((Map m) {
    int id = m["_id"];
    String name = m["name"];
    int age = m["age"];
    return Account(id, name, age);
  }).toList();
}

テーブルからデータを取ってくる部分は db.query("account") です。第1引数には対象となるテーブル名を指定します。結果はMapString, dynamicのリストとして返ってきます。各Mapは列名がキーとなっており、「_idは先頭から何番目か」を取得したりする必要はありません。

検索条件を加える

上記の方法はテーブル内のデータを全部とってきてしまいます。例えば「_id=1のデータだけ取得したい」といった場合は、 wherewhereArgs を指定します。

List<Map> results = await db.query("account", 
  where: "_id=?",
  whereArgs: [1]);

SQLインジェクションを防ぐため、 where の中では ? プレースホルダーを使用します。

一覧に戻る