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
のデータだけ取得したい」といった場合は、 where
と whereArgs
を指定します。
List<Map<String, dynamic>> results = await db!.query(
"account",
where: "_id=?",
whereArgs: [1],
);
SQL インジェクションを防ぐため、 where
の中では ? プレースホルダーを使用します。