Tech Sheets

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

最終更新日:2023-10-27

データを追加したら、次は取得してみましょう。

やはり Android の SQLiteDatabase と使い方はほぼ同じです。

Future<List<Account>> _getAllAccount(
  Database db,
) async {
  List<Map<String, dynamic>> results = await db.query("account");
  // map to account list
  return results.map((Map<String, dynamic> 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<String, dynamic>> results = await db!.query(
  "account",
  where: "_id=?",
  whereArgs: [1],
);

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

一覧に戻る